软件设计⑩④|代理模式
一、类图
二、效果
三、代码
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 //Subject 6 class AbstractPermission 7 { 8 public: 9 virtual void modifyUserInfo() = 0; 10 virtual void viewNote() = 0; 11 virtual void publishNote() = 0; 12 virtual void modifyNote() = 0; 13 virtual void setAge(int age) = 0; 14 }; 15 16 //RealSubject 17 class RealPermission :public AbstractPermission 18 { 19 public: 20 void modifyUserInfo() 21 { 22 cout << "修改用户信息!" << endl; 23 } 24 void viewNote() 25 { 26 cout << "查看找对象请求!" << endl; 27 } 28 void publishNote() 29 { 30 cout << "发布找对象请求!" << endl; 31 } 32 void modifyNote() 33 { 34 cout << "修改找对象请求!" << endl; 35 } 36 void setAge(int age){ 37 } 38 }; 39 40 //Proxy 41 class PermissionProxy :public AbstractPermission 42 { 43 public: 44 PermissionProxy(AbstractPermission* permission) :permission(permission) {} 45 46 void modifyUserInfo() 47 { 48 if (age < 18 && age > 0) { 49 cout << "对不起,您不能早恋!" << endl; 50 } 51 else if (age >= 18) { 52 permission->modifyUserInfo(); 53 } 54 else { 55 cout << "ERROR!" << endl; 56 } 57 } 58 void viewNote() 59 { 60 if (age < 18 && age > 0) { 61 cout << "对不起,您不能早恋!" << endl; 62 } 63 else if (age >= 18) { 64 permission->viewNote(); 65 } 66 else { 67 cout << "ERROR!" << endl; 68 } 69 } 70 void publishNote() 71 { 72 if (age < 18 && age > 0) { 73 cout << "对不起,您不能早恋!" << endl; 74 } 75 else if (age >= 18) { 76 permission->publishNote(); 77 } 78 else { 79 cout << "ERROR!" << endl; 80 } 81 } 82 void modifyNote() 83 { 84 if (age < 18 && age > 0) { 85 cout << "对不起,您不能早恋!" << endl; 86 } 87 else if (age >= 18) { 88 permission->modifyNote(); 89 } 90 else { 91 cout << "ERROR!" << endl; 92 } 93 } 94 void setAge(int age) { 95 this->age = age; 96 } 97 private: 98 AbstractPermission* permission; 99 int age; 100 }; 101 102 //场景 103 int main() 104 { 105 AbstractPermission* permission = new RealPermission; 106 AbstractPermission* m_permission = new PermissionProxy(permission); 107 m_permission->setAge(10); 108 m_permission->modifyUserInfo(); 109 m_permission->viewNote(); 110 m_permission->publishNote(); 111 m_permission->modifyNote(); 112 cout << "-----------------------" << endl; 113 m_permission->setAge(18); 114 m_permission->modifyUserInfo(); 115 m_permission->viewNote(); 116 m_permission->publishNote(); 117 m_permission->modifyNote(); 118 cout << "-----------------------" << endl; 119 m_permission->setAge(-1); 120 m_permission->modifyUserInfo(); 121 m_permission->viewNote(); 122 m_permission->publishNote(); 123 m_permission->modifyNote(); 124 return 0; 125 }
参考链接:https://blog.csdn.net/a369189453/article/details/81275740