Decorator模式



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模式大概可以称为"第三方插件"


 

原文地址:https://www.cnblogs.com/day/p/358363.html