返回顶部

一缕半夏微光

温柔半两,从容一生

导航

软件设计⑩④|代理模式

 

一、类图

二、效果

三、代码

  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

posted on 2021-10-22 20:31  一缕半夏微光  阅读(54)  评论(0编辑  收藏  举报