首页 > 代码库 > 设计模式之装饰者模式

设计模式之装饰者模式

  Effective Java中提出一个原则,尽量避免采用继承的方式来扩展某个类的属性及方法,除非那个类是专门被设计出来用于扩展的,以及子类与父类有着明显的is-a的关系,原因也很简单,如果那个类不是专门被设计出来用于扩展的或者那个类是由你自己维护的,在继承父类后,可能会覆盖父类实现的某个方法,但是另外一个被继承的方法又调用了被覆盖的方法,这种情况下往往会造成无法预料的错误。

  在设计模式中,通过采用组合的方式来扩展某个类的属性和方法的模式叫做装饰者模式,通过采用装饰者模式,可以更加灵活地对类进行扩展。装饰者模式的类图如下:

  还有一种叫做适配器模式的,同样采用组合的方式来进行的模式设计,它与装饰者模式的区别在于,装饰者模式主要用于为类扩展属性和方法,而适配器模式则是改变类的api,从而使类符合当前系统的要求。
  

设计模式之装饰者模式