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

代理类型

  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;
}