装饰者模式

来源:互联网 发布:小甲鱼c语言新版 编辑:程序博客网 时间:2024/06/06 03:17

       概念:动态地将责任附加到对象上。(想要扩展功能,提供有别于继承的另一种选择(避免类爆炸))

     设计原则:开关-关闭原则(对扩展开放,对修改关闭)

     代码:

class base{public:    return_type Cal();    void Display();};class A : public base{    A(base ba)    {          m_ba = ba;    }    return_type Cal()    {         // 附加A类功能处,根据情况调用父类         return m_ba.Cal() + A类处理结果    }    void Display();        base m_ba;}class B : public base{    B(base ba)    {          m_ba = ba;    }    return_type Cal()    {         // 附加B类功能处,根据情况调用父类         return m_ba.Cal() + B类处理结果    }    void Display();    base m_ba;}class C : public base{...}void how_to_used(){    base  ba = new base;  // 拥有基本功能    ba = new A(ba);        // 附加A功能    ba = new C(ba);        // 附加C功能,现有A、 C和基本功能}

      缺点:

1、多层装饰时,效率低

2、若有对特定组件装饰,应用到一般中会有问题


0 0