一、模式简介
代理模式是一种结构型设计模式,通过引入代理对象(Proxy),实现客户端(Client)间接访问主题对象(Subject)。
优势:
代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;
代理对象可以扩展目标对象的功能;
代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;
二、模式概念
1.Subject(抽象对象):定义了真实对象和代理对象的共同接口。
2.RealSubject(真实对象):即被代理对象,定义了真正需要被代理的业务逻辑。
3.Proxy(代理对象):客户端与真实对象之间的中介,通过该对象访问真实对象。
三、代码实现
#include<iostream>usingnamespacestd;//抽象类classSubject{public:Subject(){}virtualvoidrequest()=0;//纯虚函数};classRealSubject:publicSubject{public:RealSubject(){}voidrequest(){cout<<"RealSubject request"<<endl;}};classProxy:publicSubject{private:Subject*realSubject;public:Proxy(){realSubject=newRealSubject();}~Proxy(){deleterealSubject;}voidrequest(){realSubject->request();}};intmain(){cout<<"this is proxy pattern"<<endl;Proxy proxy;proxy.request();return0;}四、运行结果
this is proxy pattern RealSubject request