用代码和UML图化解设计模式之《装饰模式》
2012-10-29 23:30
561 查看
这个模式看了两次,因为我有点不太理解,其实到现在也不太理解。
通过写代码,自我理解就是把对象重新装饰了一遍。通过继承同一个基类。而不用添加额外的类了。。。。
上图吧
通过修饰类达到我们想要的效果。修饰类通常初始化了基类。
new BorderDecorator(
new ScrollDecorator(
new TextField( 80, 24 ))));
aWidget->show();
return 0;
}
运行生成的结果
ok 今天就到这里。。。。继续学习
更多文章,欢迎访问:http://blog.csdn.net/wallwind
通过写代码,自我理解就是把对象重新装饰了一遍。通过继承同一个基类。而不用添加额外的类了。。。。
上图吧
通过修饰类达到我们想要的效果。修饰类通常初始化了基类。
// Decorator.cpp : 定义控制台应用程序的入口点。 //************************************************************************/ /* @filename Decorator.cpp @author wallwind @createtime 2012/10/29 22:42 @function 命令模式 @email wochenglin@qq.com */ /************************************************************************/ #include "stdafx.h" #include <iostream> using namespace std; class Widget { public: Widget(){} virtual ~Widget(){} virtual void show()=0; }; class TextField:public Widget { public: TextField(int ix,int iy) :x(ix),y(iy) { } ~TextField(){} void show() { cout<<"x:"<<x<<endl; cout<<"y:"<<y<<endl; } private: int x; int y; }; class Decorator:public Widget { public: Decorator(Widget* widget) :m_widget(widget) {} virtual ~Decorator() { delete m_widget; } void show() { m_widget->show(); cout<<"Decorator:show()"<<endl; } private: Widget* m_widget; }; class BorderDecorator :public Decorator { public: BorderDecorator(Widget* widget) :Decorator(widget) { } void show() { Decorator::show(); cout<<"BorderDecorator:show()"<<endl; } }; class ScrollDecorator :public Decorator { public: ScrollDecorator(Widget* widget) :Decorator(widget) { } void show() { Decorator::show(); cout<<"ScrollDecorator:show()"<<endl; } }; int _tmain(int argc, _TCHAR* argv[]) {Widget* aWidget = new BorderDecorator(
new BorderDecorator(
new ScrollDecorator(
new TextField( 80, 24 ))));
aWidget->show();
return 0;
}
运行生成的结果
ok 今天就到这里。。。。继续学习
更多文章,欢迎访问:http://blog.csdn.net/wallwind
相关文章推荐
- 用代码和UML图化解设计模式之《策略模式》
- 用代码和UML图化解设计模式之《门面模式》
- 用代码和UML图化解设计模式之《观察者模式》
- 用代码和UML图化解设计模式之《命令模式》
- 用代码和UML图化解设计模式之《代理模式》
- 用代码和UML图化解设计模式之《抽象工厂模式》
- 用代码和UML图化解设计模式之《适配器模式》
- 用代码和UML图化解设计模式之《模板方法模式》
- 用代码和UML图化解设计模式之《责任链模式》
- 用代码和UML图化解设计模式之桥接模式的深入分析
- 用代码和UML图化解设计模式之《迭代器模式》
- 用代码和UML图化解设计模式之《工厂模式》
- 用代码和UML图化解设计模式之《桥接模式》
- 用代码和UML图化解设计模式之《创建者模式》
- 设计模式-Strategy代码+UML图
- 设计模式----单例模式UML图和代码实现(C#&JAVA)
- 如何编写优雅的代码:05. 设计模式(下)
- 设计模式简单代码之prototype模式(画圆篇)
- java设计模式——装饰模式(Decorator Pattern)
- 设计模式笔记——装饰模式