定义 动态地将责任附加到对象上。 (扩展功能,装饰者是比继承更有弹性的替代方案) 了解装饰者的实现过程 1.现有一个组件(对象),需要增加它的行为 2.采用装饰者模式扩展它。 3.首先是定义一个装饰者继承组件的父类接口,让装饰者获得与被装饰对象同样的类型。这里的目的不是继承被装饰者的行为。 4.因为装饰者需要代替被装饰者,所以它们必须是同一类型,这对使用者来说,总是用的同一类型,几乎没有任何变化。 5.装饰者中的行为是如何来的?是通过组合装饰者,得到了装饰者的行为。如: public class Decorator{ Component component;//组合了装饰者,可以得到被装饰者的行为 public Decorator(Compoment compoment){ this.compomemt = compomemt; } public void method(){ //增加的行为逻辑... component.method();//得到了具体被装饰者的行为 //增加的行为逻辑... } } 6.因为组合的是被装饰者的父类,所以可以传入任何子类,增加了弹性。 7.如果想要增加新的行为,就可以重新写一个装饰者,而不用更改原来的代码。 8.如何装饰最开始的组件的?就像这样: //Component1是Component的子类 Compoment component1 = new Decorator(new Component1()); // Decorator和component1都是Component类型,这样完全没问题。装饰者的构造器中接收被装饰者,通过组合,得到了被装饰者的行为。 Java中的装饰者 Java I/O 代码示例 design-mode-demo/src/pattern/decorator/ 代码地址