美文网首页
C++11代理模式展示

C++11代理模式展示

作者: FredricZhu | 来源:发表于2021-07-09 17:54 被阅读0次

    题目


    image.png

    这个程序非常简单,就是做一个wrapper,然后重写一些方法,但是不增加功能。
    关于代理模式,实际运用及实现思路,参考 C++智能指针, std::shared_ptr<T>
    代码如下,

    
    #include <string>
    using namespace std;
    
    class Person
    {
      friend class ResponsiblePerson;
      int age;
    public:
      Person(int age) : age(age) {}
    
      int get_age() const { return age; }
      void set_age(int age) { this->age=age; }
    
      string drink() const { return "drinking"; }
      string drive() const { return "driving"; }
      string drink_and_drive() const { return "driving while drunk"; }
    };
    
    class ResponsiblePerson
    {
    public:
        ResponsiblePerson(const Person &person) : person(person) {}
     
        int get_age() const { 
            return person.get_age(); 
        }
        
        void set_age(int age) { 
            person.set_age(age);
        }
        
        string drink() const { 
                
            if(person.age < 18) {
                return "too young";
            }
            
            return person.drink();
        }
        
        string drive() const { 
            if(person.age < 16) {
                return "too young";
            }
            return person.drive();
        }
        
        string drink_and_drive() const {
            return "dead";
        }
        
    private:
        Person person;
    };
    

    相关文章

      网友评论

          本文标题:C++11代理模式展示

          本文链接:https://www.haomeiwen.com/subject/wrnfpltx.html