首页 > 代码库 > 代理模式(Proxy)

代理模式(Proxy)

1,由于我家离火车站很远,所以每次买火车票都是去那些卖火车票代理那里买火车票,所以用到了代理模式

2.代理模式一般设计到这些名词

抽象角色:声明真实对象和代理对象的共同接口; 

代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。 

真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。

3,实际案例

潘金莲找西门庆,那潘金莲不好意思,咋办,找那个王婆做代理,表现在程序上时是这样的体现的

先说说这个场景中的要素:一种类型的女人,潘金莲,王婆,我们是假设的,然后潘金莲西门庆happy,但潘金莲不好意思直接,就找个王婆代理呗。

4,具体代码

//抽象角色:真实对象,代理对象接口
class IWoman{
public:
	virtual void mklove() = 0;
	virtual void watch() = 0;
};



//真实角色:代理角色所代表的真实对象,是我们最终要引用的对象,真是角色类
class PanJinLian :public IWoman{
public:
	void mklove(){
		cout << "潘金莲在和那个男的....." << endl;
	}
	void watch(){
		cout << "潘金莲在和男的的看电影" << endl;
	}
};


//代理角色:代理对象类,代理对象必须包含真是对象的引用,同时代理对象提供与真实对象相同的接口以便在任何时
class WangPo :public IWoman{
private:
	IWoman *women;
public:
	
	WangPo(){

		women = new PanJinLian();
	}
	void mklove(){
		women->mklove();
	}
	void watch(){
		women->watch();
	}
};



int _tmain(int argc, _TCHAR* argv[])
{
	

	//潘金莲,想ML,由于不好意思,所以找王婆
	WangPo wp;
	//表面看其实是王婆在happy 其实是潘金莲在爽
	wp.mklove();

	cin.get();
	return 0;
}
5,慢慢体会.....

代理模式(Proxy)