代理模式:为其他对象提供一种代理以控制对这个对象的访问
//提供一种代理来控制对其对象的访问
class AbstractCommonInterface{
public:
virtual void run() = 0;
};
//真正的系统类
class MySystem: public AbstractCommonInterface{
public:
void run(){
cout << "系统启动" <<endl;
}
};
//负责实现的代理系统类
class MySystemProxy: public AbstractCommonInterface{
public:
MySystemProxy(string username, string password):mUsername(username),mPassword(password){
psystem = new MySystem;
}
bool check(){
if(mUsername == "admin" && mPassword == "admin"){
return true;
}else{
return false;
}
}
virtual void run(){
if(check())
this->psystem->run();
else{
cout<<"用户名或密码错误"<<endl;
}
}
~MySystemProxy(){
if(psystem != nullptr)
delete psystem;
}
public:
MySystem* psystem;
string mUsername;
string mPassword;
};
int main(){
MySystemProxy* proxy = new MySystemProxy("admin", "admin");
proxy->run();
return 0;
}