定义
为其它对象提供一种代理以控制对这个对象的访问
主要解决
在直接访问对象时带来的问题,比如:要访问的对象在远程服务器上。在面向对象系统中,有些对象由于某些原因,直接访问会给使用者或系统带来很多麻烦,可以在访问此对象时加上一个对此对象的访问层。
如何解决
增加中间代理层
关键代码
实现与被代理类组合
class Gril { public: Gril(string name = "gril"):m_string(name){} string getName() { return m_string; } private: string m_string; }; class Profession { public: virtual ~Profession(){} virtual void profess() = 0; }; class YoungMan:public Profession { public: YoungMan(Gril gril):m_gril(gril){} void profess() { cout << "Young man love " << m_gril.getName().data() << endl; } private: Gril m_gril; }; class ManProxy:public Profession { public: ManProxy(Gril gril):m_man(new YoungMan(gril)){} void profess() { cout << "I am Proxy" << endl; m_man->profess(); } private: YoungMan* m_man; }; int main(int argc, char *argv[]) { Gril gril("hei"); Profession* proxy = new ManProxy(gril); proxy->profess(); delete proxy; return 0; }