代理模式是一种访问中间媒介,其最大的好处在于实现了逻辑与实现的彻底解耦。

代理类型

  1. 远程代理
  2. 虚代理
  3. 保护代理
  4. 智能指针

结构图

示例代码

class SubObject
                {
                public:
                	virtual void Request() = 0;
                
                };
                
                class ConCreateSubObject :public SubObject
                {
                public:
                
                	virtual void Request()override
                	{
                
                	}
                
                
                };
                
                class Proxy
                {
                public:
                	void Request()
                	{
                		sub->Request();
                		//do something else
                	}
                	Proxy(SubObject *sub)
                	{
                		this->sub = sub;
                	}
                private:
                	SubObject *sub;
                
                
                };
                
                
                int main(int argc, char *argv[])
                {
                	Proxy *proxy = new Proxy(new ConCreateSubObject);
                
                	proxy->Request();
                
                	system("pause");
                	return 0;
                }