Decorator模式
http://www.jdon.com/designpatterns/decorator.htm
使用Decorator模式
http://www.javaall.com/show.aspx?id=207&cid=21
Decorator定义:
动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式(就是说用继承)达到功能的扩充显得更为灵活.
使用Decorator的理由是:
这些功能需要由用户动态决定加入的方式和时机.Decorator提供了"即插即用"的方法,在运行期间决定何时增加何种功能.
Decorator描述(GOF)
Decorator模式的主要目的是利用一个对像,透明地为另一个对像添加一个新的功能
Decorator模式被归类为结构模式,Decorator模式提供了子类化的一个替代方案
调用:
Work squarePeg = new SquarePeg();
Work decorator = new Decorator(squarePeg);
decorator.insert();
那么
什么时候应该子类化(使用继承),什么时候应该采用Decorate模式?
子类化和Decorator模式的主要区别是:采用子类化,你同一个类打交道;使用Decorator模式,你可以动态的修改多个对象。当你扩展(Extend)一个类的时候,你对儿子类的改变将会影响到这个儿子类所有的实例。采用Decorator模式,你所作的改变只会影响到你打算改变的那个对象。
Decorator模式大概可以称为"第三方插件"