《Javascript设计模式》读书笔记之“装饰者模式”

装饰者模式用于透明的把对象包装在具有同样接口的对象中。

在不改变接口的情况下,装饰者模式比创建子类更合适。相较于创建子类,装饰者模式可以节省很多代码。

装饰者模式和组合模式有很多共同点,它们都用来包装对象,它们都与所包装的对象实现同样的接口并且会把任何方法调用传递给这些对象。那么二者间有什么区别呢,组合模式的目的是组织子对象并不修改方法调用,而装饰者模式的目的是修改方法调用。

装饰者修改对象的方式有四种: 

  1、在方法调用之后添加行为,原有行为基础上添加或修改返回结果

  2、在方法调用之前添加行为,在原有行为之前进行处理或者修改原有行为的参数

  3、替换方法

  4、增加新方法

适用场景:

  需要为类添加新特性或者功能,当派生子类不太现实时就应该使用装饰者模式。派生子类不现实指新特性比较多且可任意组合时,这种情况下仍然派生子类的话就会产生大量的子类、大量的代码,给维护带来麻烦。

装饰者模式的主要缺点是它会破坏类型,当你的代码基于类型检查时就会出问题。再一个缺点就是略微复杂。

原文地址:https://www.cnblogs.com/chaos-forfun/p/3248552.html