现在的位置: 首页 > 综合 > 正文

代理模式

2018年04月29日 ⁄ 综合 ⁄ 共 914字 ⁄ 字号 评论关闭
#include <iostream>
using namespace std;

class Interface
{
public:
	virtual void GiveFlower() = 0;
	virtual void GiveChoclete() = 0;
	virtual void GiveDoll() = 0;	
};

class SchoolGirl
{
public:
	SchoolGirl(const string &str):name(str){}
	string& getGirlName()
	{
		return name;
	}
private:
	string name;
};

class RealPursuit : public Interface
{
public:
	RealPursuit(SchoolGirl  *g):girl(g){}
	virtual void GiveFlower()
	{
		cout << girl->getGirlName() << ",给你花" << endl;
	}
	virtual void GiveChoclete()
	{
		cout << girl->getGirlName() << ",给你巧克力" << endl;
	}
	virtual void GiveDoll()
	{
		cout << girl->getGirlName() << ",给你娃娃" << endl;
	}
private:
	SchoolGirl* girl;
};

class Proxy : public Interface
{
public:
	Proxy(SchoolGirl * girl) 
	{
		rp = new RealPursuit(girl);
	}
	virtual void GiveFlower()
	{
		rp->GiveFlower();	
	}
	virtual void GiveChoclete()
	{
		rp->GiveChoclete();
	}
	virtual void GiveDoll()
	{
		rp->GiveDoll();
	}

private:
	RealPursuit *rp;
};

int main(void)
{
	SchoolGirl girl(string("小美女"));
	Proxy daili(&girl);
	daili.GiveFlower();
	daili.GiveChoclete();
	daili.GiveDoll();

	return 0;
}

【上篇】
【下篇】

抱歉!评论已关闭.