C++设计模式之Proxy模式(代理模式)
代理模式很容易理解,就是代替别人去做某一件事,打个比方,我们需要买水果,一般是去超市或者水果店买水果,很少有人去果园买水果,果园是生产水果的地方,但很少出售水果,在这里,水果店,超市就成了代理。
首先定义一个抽象类,提供所有的函数接口。
定义卖水果的抽象类,也就是接口,果园与超市都要继承这个类。
#pragma once
class CSellFruits//定义一个抽象类
{
public:CSellFruits(void);virtual ~CSellFruits(void);virtual void sellapple()=0; //定义接口,卖苹果virtual void sellorange()=0;//定义接口,卖橘子
};#include "SellFruits.h"
CSellFruits::CSellFruits(void)
{
}CSellFruits::~CSellFruits(void)
{
}
2.定义具体类,也就是果园类,果园生产水果,但是一般不买水果
#pragma once
#include "sellfruits.h"
#include <stdio.h>
class COrchard :public CSellFruits
{
public:COrchard(void);virtual ~COrchard(void);virtual void sellapple();virtual void sellorange();
};#include "Orchard.h"
COrchard::COrchard(void)
{
}COrchard::~COrchard(void)
{
}void COrchard::sellapple()
{printf("Sell apple\n");
}void COrchard::sellorange()
{printf("Sell orange\n");
}
3.定义代理类,代理卖水果的类
#pragma once
#include "sellfruits.h"
#include "Orchard.h"
#include <stdio.h>
class CProcySellFruits :public CSellFruits
{
public:CProcySellFruits(void);virtual ~CProcySellFruits(void);virtual void sellapple();virtual void sellorange();
private:CSellFruits *p_SellFruits; //传入接口对象
};#include "ProcySellFruits.h"
CProcySellFruits::CProcySellFruits(void):p_SellFruits(NULL)
{
}CProcySellFruits::~CProcySellFruits(void)
{
}void CProcySellFruits::sellapple()
{if(this->p_SellFruits==NULL){this->p_SellFruits=new COrchard(); //用被代理的类实例化}this->p_SellFruits->sellapple();//代理果园卖苹果
}void CProcySellFruits::sellorange()
{if(this->p_SellFruits==NULL){this->p_SellFruits=new COrchard(); //用被代理的类实例化}this->p_SellFruits->sellorange();//代理果园卖橘子
}
4.实际调用
CProxySellFruits* p=new CProxySellFruits(); //用代理类卖水果p->SellApple();p->SellOrange();
C++设计模式之Proxy模式(代理模式)相关推荐
- Java设计模式(10)代理模式(Proxy模式)
理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...
- 设计模式(四)--代理模式
设计模式(四)–代理模式 文章目录 设计模式(四)--代理模式 其他链接 代理模式 1.简介 2.静态代理 角色 代码实现 好处 3.动态代理 代码实现 解析 其他链接 JVM学习笔记(一) JVM学 ...
- 设计模式之----Java动态代理模式
在Spring中,有很多设计模式被应用,其中不乏代理模式.而代码模式中,就一定少不了动态代理模式.今天就对动态代理模式进行学习记录. 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托 ...
- C++设计模式 | 四种结构型模式——代理模式、外观模式、适配器模式、装饰模式...
结构型模式:让类和类进行组合,获得更大的结构. 代理模式 代理模式的定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端 ...
- 《拉勾Java高薪课程》阶段一输出 之 通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式)--菜鸟小回
通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式) 文章目录 通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式) @[toc] 一.单例模式 1. 相关概念 2. 演示思路 3. ...
- 设计模式 — 结构型模式 — 代理模式
目录 文章目录 目录 代理模式 应用场景 代码示例 代理模式 代理模式,为其他对象提供一种代理,以此控制一个对象的访问方式.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户 ...
- 【设计模式与体系结构】代理模式
[设计模式与体系结构]代理模式 文章目录 [设计模式与体系结构]代理模式 一.实例分析 二.代码实现 三.实现结果 一.实例分析 (1) 代理模式设计一个房产中介的模拟程序. 要求:房产中介有介绍和代 ...
- 小白都能懂的设计模式 java版 静态代理模式实战练习(超详细)
静态代理: 角色分析: 抽象角色:一般使用接口或者是抽象类来解决 真实角色:被代理的角色 代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作 客户:访问代理对象的人 以一个租房子的例子来 ...
- 设计模式学习之1—代理模式
设计模式学习之1-代理模式 0.?先看这里 --- 诗雨的学习说明 1.从生活中初识代理 2.代理模式的类图和角色 3.静态代理和动态代理 4.静态代理 和 动态代理 的 使用模板 4.1 静态代理使 ...
- 设计模式笔记15:代理模式(Proxy Pattern)
一.代理模式的内容 代理模式为另一个对象提供一个替身或占位符以访问这个对象. 给某一个对象提供一个代理,并由代理对象控制对原对象的引用.代理模式的英文叫做Proxy或Su ...
最新文章
- ipvsadm的几个参数输出的说明
- 基于Springboot实现作业管理系统
- C++函数调用方式(_stdcall, _pascal, _cdecl...)总结 收藏
- 用python排序算法_Python - 八大排序算法
- 2年6个月11天,外包到阿里的修仙之路
- C#编程基础(简单概述与理解)
- 使用 anacoda 安装scrapy
- 防火墙放开oracle远程,oracleMTS模式下防火墙如何开通
- 山西毕业主题研学夏令营
- mysql查询表升序降序_创建一个按钮,对MYSQL查询进行升序和降序排序
- 高举5G和AI两面旗帜:紫光展锐市场峰会火爆申城
- 使用onlyoffice让你轻松实现word、ppt、excel在线编辑功能
- 通过swoole扩展,实现简单的匿名聊天室功能
- Android Studio安装和使用教程(全文图解)
- 2017滴滴校招 末尾0的个数(数学知识)
- Windows 7 SATA与XP IDE双启动多个磁盘
- elementUI checkbox选中回显操作注意事项
- Java中关于length和length()的问题小结
- eclipse在资源管理器中打开文件
- 编程基础——鱼龙混杂来三波
热门文章
- jbutton可以设置id吗_Java Swing简单控件实例(JButton,JLabel,JMenuBar,JComboBo)
- python dlib opencv人脸识别准确度_基于dlib和opencv库的人脸识别
- 2.JAVA基础——数据类型、变量及运算符
- pytorch 入门学习 实现线性回归-5
- apache2.4 php5.5 配置,求助,apache2.4+php5.5,配置好不能运行,错误信息如下
- matlab头模型图像,用Matlab解《2013年数据建模比赛》图像碎片拼接题
- Leetcode刷题指南和top100题目
- git统计每个人的代码行数_程序员实用工具,推荐一款代码统计神器GitStats
- 2019-03-13
- .NET Core 3.0带来桌面支持(Windows Only)