设计模式:可复用面向对象软件及基础:3-4 结构型模式:装饰模式(decorator)
发布日期:2021-05-06 15:37:04 浏览次数:25 分类:精选文章

本文共 1011 字,大约阅读时间需要 3 分钟。

装饰模式

概念

      装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。

装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。

类图角色和职责

 

 

适用于:

        (Decorator Pattern动态的给一个对象添加一些额外的职责。就增加功能来说,此模式比生成子类更为灵活。

案例

#include 
using namespace std;class Car{public: virtual void show() = 0;protected:private:};class RunCar : public Car{public: void run() { cout << "可以跑" << endl; } virtual void show() { run(); }protected:private:};class SwimCarDirector : public Car{public: SwimCarDirector(Car *p) { m_p = p; } void swim() { cout << "可以游" << endl; } virtual void show() { m_p->show(); swim(); }private: Car *m_p;};class FlyCarDirector : public Car{public: FlyCarDirector(Car *p) { m_p = p; } void fly() { cout << "可以飞" << endl; } virtual void show() { m_p->show(); fly(); }private: Car *m_p;};void main(){ Car *runcar = NULL; runcar = new RunCar; runcar->show(); cout <<"车开始装饰swim"<
show(); cout <<"车开始装饰fly"<
show(); delete flyCar; delete swimCar; delete runcar; return ;}

 

上一篇:设计模式:可复用面向对象软件及基础:3-5 结构型模式 外观模式(Facade)
下一篇:设计模式:可复用面向对象软件及基础:3-3 结构型模式:组合模式(composite)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月12日 06时25分09秒