设计模式之十二------Proxy(代理)
来源:互联网 发布:阿里云域名如何转让 编辑:程序博客网 时间:2024/06/05 16:35
问题:
有一组类共同实现一个借口,我们想对它们加以控制,例如延时执行之类的。如果为每个类都加上这个方法,这样会让继承体系变得更大。让系统变得冗余;
解决方案:
我们可以提供一个代理类,让这个代理类实现这个接口,并添加控制操作;代理成为这个中介。这就是代理模式
比较:
以前学过一个Decorator,和这个比较类似。但是他们还是有区别的:
代理:为其它对象提供一种代理以控制对这个对象的访问。
装饰者模式:动态地给一个对象添加一些额外的职责。
重点一个在于“增加”职责,另一个在于“控制”访问。这是它们最本质的区别。
源代码:
//This a programme about Proxy
#include<iostream>
using namespace std;
class Subject{
protected:
Subject(){};
public:
virtual void Operator()=0;
};
class ConcreateSubject:public Subject{
public:
ConcreateSubject(){}
virtual void Operator(){
cout<<"实际操作被调用"<<endl;
}
};
class Proxy:public Subject{
public:
Proxy(Subject *sub){
subject=sub;
}
~Proxy(){
if (subject!=NULL)
{
delete subject;
subject=NULL;
}
}
virtual void Operator(){
cout<<"代理开始工作"<<endl;
subject->Operator();
}
private:
Subject *subject;
};
void main()
{
Subject *subject=new Proxy(new ConcreateSubject);
subject->Operator();
}
- 设计模式之十二------Proxy(代理)
- C++设计模式之十二:Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- 设计模式之Proxy(代理)
- iOS的捕获已发布应用的崩溃信息
- jquery easyui datagrid加载数据不符合datagrid能够解析的格式处理方法
- hdu 4313(kruskal思想)
- MyEclipse修改项目名称后,部署到tomcat问题
- The Tomcat installation directory is not valid. It is missing expected file or folder lib/jasper-el
- 设计模式之十二------Proxy(代理)
- TCP三次握手及四次挥手详细图解
- NetTiers学习笔记01---调用Data层操作数据
- DXP直接走蛇形
- 伤感唯美语录_离去,让事情变得简单
- C语言数学函数ceil
- 产品设计过程中的总结
- ibatis中oracle timestamp 条件查询特别是包括当天的内容
- JSP中的连接mysql数据库的代码实现