设计模式——代理模式
现在存在一个场景:当你想访问一个系统时,需要经过一个代理系统,它的工作是判断你的用户名和密码是否正确,如果正确,才让你访问系统:
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
二维码