代理模式----代理追求者
来源:互联网 发布:js求数组最大值和下标 编辑:程序博客网 时间:2024/05/23 02:05
代理模式:为其他对象提供一种代理以控制对这个对象的访问。代理模式其实就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。可以应用的场合:1、远程代理;2、虚拟代理;3安全代理;4、智能指引。(都没用过,不做介绍了)。
以追求MM为例,小A喜欢MM小C,但是小C不认识小A,但是认识小A的好哥们小B,于是小A就买了礼物让小B代理他送给小C,并转达他的爱意。此时小A就是RealSubject类,而小B就是Proxy类,他们共同继承Subject抽象接口类即礼物类,小A是真正的送礼物的,所以他必须实现这个抽象接口类。小B是代理者,他必须调用小A实现的方法。
#include <iostream>#include <string>using namespace std;class SchoolGirl{private:string name;public:SchoolGirl( string& na ) : name(na){}string GetName(){return name;}void SetName(string& na){name = na;}};/* 代理接口 */class IGiveGift{public:virtual void GiveDolls() = 0;virtual void GiveFlowers() = 0;virtual void GiveChocolate() = 0;};/* 追求者 *//* 让追求者去实现送礼物的接口 */class Pursuit : public IGiveGift{private:SchoolGirl mm;public:Pursuit( SchoolGirl& m ) : mm(m){}virtual void GiveDolls(){cout<<mm.GetName()<<" 送你洋娃娃"<<endl;}virtual void GiveFlowers(){cout<<mm.GetName()<<" 送你鲜花"<<endl;}virtual void GiveChocolate(){cout<<mm.GetName()<<" 送你巧克力"<<endl;}};/* 代理模式 */class Proxy : public IGiveGift{private:Pursuit* gg; /* 指向被代理对象的指针 */public:Proxy( SchoolGirl& mm ){gg = new Pursuit(mm);}~Proxy(){delete gg;}/* 在实现方法中调用追求者类的相关方法,因为真正送礼物的是追求者 */virtual void GiveDolls(){gg->GiveDolls();}virtual void GiveFlowers(){gg->GiveFlowers();}virtual void GiveChocolate(){gg->GiveChocolate();}};int main(){string name = "娇娇";SchoolGirl sgirl(name);Proxy daili( sgirl );daili.GiveDolls();daili.GiveFlowers();daili.GiveChocolate();return 0;}
0 0
- 代理模式----代理追求者
- 装饰者模式,静态代理,动态代理
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- oracle 两表数据对比---minus
- Matlab学习笔记之一
- HDU 1084(水题)
- 设计模式六大原则(5):迪米特原则
- Access Control List and Process(如何设置DACL)
- 代理模式----代理追求者
- 遇过的坑-用ant编译java项目,如果static变量有修改,使用了该static变量的java文件, 不会重编译
- 跨站脚本攻击—shellcode
- Android学习笔记<20140113> Internal Storage
- ubuntu文本编码转换工具iconv
- 小强的HTML5移动开发之路(19)——HTML5 Local Storage(本地存储)
- 常用的一些注入命令
- iconv: illegal input sequence at position 14876089
- 【高精度】2的n次方