设计模式——代理模式

现在存在一个场景:当你想访问一个系统时,需要经过一个代理系统,它的工作是判断你的用户名和密码是否正确,如果正确,才让你访问系统:

class system
{
public:
	virtual void run() = 0;
};
class Mysystem :public system
{
public:
	virtual void run()
	{
		cout << "run successfully" << endl;
	}
};

class Proxy :public system
{
public:
	Proxy(string usr, string pswd) :_usr(usr), _pswd(pswd),ms(new Mysystem){};
	bool check()
	{
		if (_usr == "wjh" && _pswd == "nb")
			return true;
		return false;
	}
	virtual void run()
	{
		if (check())
		{
			ms->run();
		}
		else cout << "you are not root" << endl;
	}
	Mysystem* ms;
	string _usr;
	string _pswd;
};

void test()
{
	Proxy* py1 = new Proxy("wjh", "nb");
	py1->run();
	Proxy* py2 = new Proxy("wjh", "不nb");
	py2->run();
}
int main()
{
	test();
	return 0;
}

代理模式就是给一个类的访问加上了权限设置。而这个权限审核的工作又由一个代理的类来完成。代理的类和实际你想访问的类是相似的,你访问代理的类就好像访问了实际的类。所以这两类之间需要一种共同的数据,所以代理类里面有真正类的成员变量,用以访问真正类里面的方法。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>