虽然人家说装饰者模式是一个简单的设计模式,但看第一遍也只看出了一个大概,并没有完全搞懂这个模式。
我发现自己学习一个东西,第一遍在脑海里基本是模糊或者不知其所然的,但第二第三遍看时,基本都能看出所以然来。所以,自己读书最少需要读两遍才能有所体会的,同时也说明,天赋不够时(很多人看一遍就理解得非常透彻了),努力多付出是可以得到弥补的。
先来看看装饰模式的定义:
The Decorator Pattern attaches additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.
装饰者模式可以动态地给一个对象增加其他职责。就扩展对象功能来说,装饰者模式比生成子类更为灵活。
再看看设计模式的结构图:
Component是定义了一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加职责。Decorator是装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator存在的。ConcreteDecorator就是具体的装饰对象,起到给Component添加职责的功能。
Component(被装饰对象基类)
定义对象的接口,可以给这些对象动态增加职责;
ConcreteComponent(具体被装饰对象)
定义具体的对象,Decorator可以给它增加额外的职责;
Decorator(装饰者抽象类)
维护一个指向Component实例的引用,并且定义了与Component一致的接口;
ConcreteDecorator(具体装饰者)
具体的装饰对象,给内部持有的具体被装饰对象增加具体的职责;
园子里Justin对装饰者模式有很好的解读,需要详细了解的朋友请前往:http://www.cnblogs.com/justinw/archive/2007/06/11/779356.html