代理模式的定义:
为其他对象提供一种代理以控制这个对象的访问,在某些情况下,一个对象不适合或者不可能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式实现:
#include <iostream>
#include<string>
using namespace std;
//提供一种代理控制其他对象的访问
class Abstractcommoninterface
{
public:
virtual void run()=0;
};
/
class mysystem: public Abstractcommoninterface
{
public:
virtual void run()
{
cout<<"系统启动..."<<endl;
}
};
//代理类
class mysystemproxy:public Abstractcommoninterface
{
public :
mysystemproxy(string username,string passwd)
{
this->uname=username;
this->upasswd=passwd;
psystem=new mysystem;
}
bool checkname()
{
if(uname=="admin"&&upasswd=="admin")
{
return true;
}
return false;
}
virtual void run()
{
if(checkname())
{
cout<<"验证通过"<<endl;
this->psystem->run();
}
else
{
cout<<"用户名或者密码错误,权限不足"<<endl;
}
}
~mysystemproxy()
{
if(psystem!=NULL)
{
delete psystem;
}
}
private:
mysystem *psystem;
string uname;
string upasswd;
};
void test01()
{
mysystemproxy* proxy=new mysystemproxy("admin","admin");
proxy->run();
};
//必须要有权限,不是所有人都能来启动这个系统,提供用户名和密码
//比如工厂和超市,买东西的时候直接去超市而不去工厂
int main()
{
test01();
}
代理服务器:
代理的类图: