1 #include<iostream>
2 using namespace std;
3 #include<string>
4
5 //代理模式:为其他对象提供一种代理以控制对这个对象的访问
6
7 class abstractCommonInterface{
8 public:
9 virtual void run()=0;
10 };
11
12 class mySystem:public abstractCommonInterface{
13 public:
14 virtual void run(){
15 cout<<"system start"<<endl;
16 }
17 };
18
19 //系统必须要权限的验证,不是每个人都能来启动,需要用户名和密码
20 //代理类
21 class mySystemProxy:public abstractCommonInterface{
22 public:
23 mySystemProxy(string name,string password):mName(name),mPassword(password){
24 pMysystem=new mySystem;
25 }
26 bool checkAuthority(){
27 if(mName=="admin"&&mPassword=="admin"){
28 return true;
29 }
30 return false;
31 }
32 virtual void run(){
33 if(checkAuthority()){
34 this->pMysystem->run();
35 cout<<"checkAuthority correct"<<endl;
36 }else{
37 cout<<"name or password error"<<endl;
38 }
39 }
40 ~mySystemProxy(){
41 if(pMysystem!=NULL){
42 delete pMysystem;
43 }
44 }
45 mySystem* pMysystem;
46 string mName;
47 string mPassword;
48 };
49 int main()
50 {
51 mySystemProxy* system=new mySystemProxy("admin","admin");
52 system->run();
53 return 0;
54 }