我与C++设计模式(十一)——代理模式
来源:互联网 发布:自学unity3d要多久 编辑:程序博客网 时间:2024/06/04 19:53
proxy这种关系在生活中很常见,就是叫别人帮你去完成你并不方便自己直接完成或者说别人完成优于自己完成的事情。proxy模式就是解决或者说优化程序设计中遇到的类似情况。
其实我看完代理模式后,总是在想,这和adapter差别到底在哪里?先看看两者的UML图:
proxy:
从UML图上,我看到了proxy中有两次继承,但是当作者真正给出代码后,我没看到我想看到的,我只是觉得这段代码好熟悉。这跟Adapter感觉好相似啊。但是后来的学习我明白了,之前我实现的Adapter并不是完善,我会在不久去重新看看的,在这儿我推荐一篇文章,点这儿,该文章中,对区分这些类似的封装模式有一定的帮助。
下面是我实现的代码:
#ifndef _PROXY_H__#define _PROXY_H__class subject{ public: virtual ~subject(); virtual void request() = 0; protected: subject();};class concrete_subject:public subject{ public: concrete_subject(); ~concrete_subject(); void request();};class proxy{ public: proxy(); proxy(subject *); ~proxy(); void request(); private: subject * _p_sub;};#endif
//proxy.cpp#include "proxy.h"#include <iostream>using namespace std;subject::subject(){}subject::~subject(){}concrete_subject::concrete_subject(){}concrete_subject::~concrete_subject(){}void concrete_subject::request(){ cout<<"REQUEST FROM CONCRETE_SUBJECT"<<endl;}proxy::proxy() :_p_sub(0){}proxy::proxy(subject *p_sub) :_p_sub(p_sub){}proxy::~proxy(){ delete _p_sub;}void proxy::request(){ cout<<"REQUEST FORM PROXY"<<endl; _p_sub->request();}
//main.cpp#include "proxy.h"int main(int argc,char **argv){ subject *p_sub = new concrete_subject(); proxy * p_pro = new proxy(p_sub); p_pro->request(); return 0;}
0 0
- 我与C++设计模式(十一)——代理模式
- 我与C++设计模式(二十一)——迭代器模式
- 设计模式(十一)proxy代理模式
- 设计模式——代理模式(C++)
- C++与设计模式(8)——代理模式
- 模式十一(代理模式)
- 设计模式(十一)代理模式Proxy(结构型)
- 设计模式(十一)代理模式Proxy(结构型)
- 设计模式(十一)代理模式Proxy(结构型)
- 设计模式(十一)代理模式Proxy(结构型)
- 设计模式(十一)代理模式Proxy(结构型)
- 设计模式(十一)代理模式Proxy(结构型)
- 设计模式(十一)代理模式Proxy(结构型)
- 设计模式(十一)之Proxy - 代理模式
- C++设计模式[十一]代理模式
- 跟我学设计模式视频教程——代理模式
- 设计模式—代理模式(四)
- 设计模式—代理模式
- VS2013中如何解决error C4996: 'fopen'问题
- 同源策略与jsonp跨域
- MapReduce 编程 系列十二 用Hadoop Streaming技术集成newLISP脚本
- 浅层深度学习的自然语言研究(3)
- 奇模和偶模概念
- 我与C++设计模式(十一)——代理模式
- Python 标准库 urllib2 的使用细节(Redirect,cookie,http返回码等)
- 【BZOJ1507】[NOI2003]Editor Splay
- 关于编程里的那些 ABCDEFG
- C++中map容器的说明和使用技巧
- android错误之Unable to resolve target 'Google Inc.:Google APIs:5'
- 在Ubuntu系统下装Win7并引导双系统
- 傅立叶变换
- C++ Primer 第五版 中文版 练习 12.30 个人code