zoukankan      html  css  js  c++  java
  • proxy模式

     1 #include <iostream>
     2 #include <string>
     3 #include <vector>
     4 #include <queue>
     5 #include <set>
     6 #include <algorithm>
     7 #include <map>
     8 #include <stack>
     9 using namespace std;
    10 
    11 // 女学生类
    12 // 相当于client类
    13 class cSchoolGirl {
    14 private:
    15     string m_name; // 姓名
    16 
    17 public:
    18     string GetName() const {
    19         return m_name;
    20     }
    21     void SetName(string name) {
    22         m_name = name;
    23     }
    24 };
    25 
    26 // 送礼物接口
    27 // 相当于Subject类,定义了实体和代理的公共接口
    28 class IGiveGift {
    29 public:
    30     virtual string GiveFlowers() = 0;
    31 };
    32 
    33 // 追求者
    34 // 相当于RealSubject类,实际工作的类
    35 class cPursuit: public IGiveGift {
    36 private:
    37     cSchoolGirl* m_mm;
    38 
    39 public:
    40     cPursuit(cSchoolGirl* mm) :
    41             m_mm(mm) {
    42     }
    43 
    44     string GiveFlowers() {
    45         return m_mm->GetName() + string(" 送你鲜花");
    46     }
    47 };
    48 
    49 // 代理类
    50 // 即Proxy类,主要的功能是代理RealSubject接受外界的调用
    51 // 使得减少了RealSubject与外界的耦合
    52 class cProxy: public IGiveGift {
    53 private:
    54     cPursuit* m_gg;
    55 
    56 public:
    57     cProxy(cSchoolGirl* mm) {
    58         m_gg = new cPursuit(mm);
    59     }
    60     // 代理的时候可以添加一点额外的功能,例如多加一句“你好”
    61     string GiveFlowers() {
    62         return string("你好,") + m_gg->GiveFlowers();
    63     }
    64 };
    65 
    66 int main() {
    67     cSchoolGirl jiaojiao;
    68     jiaojiao.SetName("caroline");
    69     cProxy daili(&jiaojiao);
    70     cout << daili.GiveFlowers() << endl;
    71     return 0;
    72 }
  • 相关阅读:
    第十二周 张文小组学习情况总结
    第五章
    第四章
    第三章
    软工实训--学习回顾2
    软工实训-- 学习回顾1
    构建之法——读书笔记(9)
    构建之法——读书笔记(8)
    构建之法——读书笔记(7)
    第13周张文小组学习情况总结
  • 原文地址:https://www.cnblogs.com/kakamilan/p/2607054.html
Copyright © 2011-2022 走看看