C++中的代理模式

C++中代理模式也称为Proxy模式,是构造性的设计模式之一,它可以为其他对象提供一种代理,以控制对这个对象的访问。、

所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后)完成某些特别的处理。

代理模式一般会有以下三个角色:

1、抽象角色:指代理角色和真实角色对外提供的公共方法,一般为一个接口。

2、真实角色:需要实现抽象角色接口,定义了真实角色所要实现的业务逻辑,以便供代理角色调用,也就是真正的业务逻辑。

3、代理角色:需要实现抽象角色接口,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作,将统一的流程控制都放到代理角色中处理。

以下是示例代码:

#include<iostream>
using namespace std;
class SaleBook
{
public:
	virtual void Sale()=0;
};
class BookShop : public SaleBook
{
private:
	static int Bookcount;
public:
	void Sale()
	{
		cout << "BookShop" << endl;
		Bookcount++;
	}
	static int Getcount()
	{
		return Bookcount;
	}
};
class TaoBao : public SaleBook
{
private:
	SaleBook *sale;
public:
	TaoBao(SaleBook *s)
	{
		sale=s;
	}
	void Sale()
	{
		cout << "TaoBao" << endl;
		sale->Sale();
	}
};
int BookShop::Bookcount=0;
int main()
{
	SaleBook *shop=new BookShop;
	SaleBook *taobao=new TaoBao(shop);   //代理
	
	shop->Sale();
	taobao->Sale();
	taobao->Sale();
	
	cout << BookShop::Getcount() << endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/tmh_15195862719/article/details/81625512