设计模式之Proxy模式(C++实现)

代理模式,那么什么是代理模式勒,我们可以这样来理解,我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道
被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被
代理的人能干活呀。说起来很抽象,具体看实例还是来的实在!

 

比如西门庆找潘金莲,那潘金莲不好意思答复呀,咋办,找那个王婆做代理,表现在程序上时这样的:
先定义一种类型的女人

class KindWomen                           //指示这一类女人,王婆和潘金莲都属于这种女人
{
public:
	virtual void HappyWithMan() = 0;      //和男人开心,你懂的,王婆和潘金莲都会
	virtual void MakeEyesWithMan() = 0;   //给男人抛媚眼,王婆和潘金莲都会抛
};

//潘金莲出场
class Panjinlian:public KindWomen
{
public:
	virtual void HappyWithMan()
	{
		cout<<"潘金莲和男人开心.........."<<endl;
	}

	virtual void MakeEyesWithMan()
	{
		cout<<"潘金莲给男人抛媚眼."<<endl;
	}
};

//王婆出场
class WangPo:public KindWomen
{
private:
	KindWomen *kindWomen;
public:
	virtual void HappyWithMan()   //王婆自知老了,happy不动了,所以叫别人去干
	{
		kindWomen->HappyWithMan();
	}

	virtual void MakeEyesWithMan()  //王婆这么丑抛媚眼谁看啊,所以她又喊别人去抛
	{
		kindWomen->MakeEyesWithMan();
	}

	WangPo(KindWomen *m_pKindWomen)   //设置王婆到底代理的是谁,王婆开始构造
	{
		this->kindWomen = m_pKindWomen;
	}
};

//西门庆控制主函数
int main()
{
	//西门庆看上了潘金莲,但是潘金莲害羞啊,也不敢去抛媚眼,所以这时候就需要王婆帮他做一些事撒

	WangPo wangpo = new WangPo(new Panjinlian() );     //王婆出场,代理的是潘金莲

	wangpo.MakeEyesWithMan();                          //王婆开始抛媚眼,但是实际上是潘金莲在抛媚眼

	wangpo.HappyWithMan();                            //王婆开始和男人happy.....   实际上王婆哪能和男人开心,幕后是潘金莲在happy
	system("pause");
	return 0;
}

假如到现在还有个卢俊义他老婆也想和西门庆玩玩,那么他也可以找到王婆做代理人,同样继承了抽象类并实现方法,传递给王婆就可以做代理了,有的时候如果需要代理的对象过多,也可以结合享元模式使用,享元模式以后再说

 

总结一下:代理模式就是利用接口和多态来实现,对需要代理的人进行了浅封装,直接出面做事的人是代理人,但是实际上在做的是被代理的人

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值