class BooKStore { public: virtual void salebook() { std::cout<<"BookStore salebook"<<std::endl; } }; class RealStore : public BooKStore { public: virtual void salebook() { std::cout<<"RealStore salebook"<<std::endl; } }; class DangDangProxy : public BooKStore { public: virtual void salebook() { doubleEleven(); realstore->salebook(); std::cout<<"DangDangProxy salebook"<<std::endl; } void doubleEleven() { std::cout<<"doubleEleven"<<std::endl; }
private:
RealStore *realstore;
};
subject (抽象主题角色):真实主题与代理主题的共同接口
RealSubject(真实主题角色):定义了代理角色所代表的真实对象
Proxy(代理主题角色):含有对真实主题角色的引用,代理角色通常在将客户端调用传递给真实主题对象之前或者之后执行某些操作,而不是单纯返回真实的对象。
提示:a中包含b类;a、b类实现协议类protocol
对一个类的功能性增强的方式,1.直接修改类 2.给类A继承一个子类 3.组合的方式,增加一个成员变量