装饰者模式

装饰者模式的意图:
    装饰者模式是为了很灵活的动态的去给一个对象增加额外的功能.
应用场景:
    1.是为了在不影响原有的类对象的情况下对类对象的功能进行扩展.而且扩展的功能还可以被取消.
    2.还有一些场景很适合装饰者模式,就是当我们为了扩展一个类的功能而不断的去实现它的子类的时候,可能会出现子类的剧增,或者是一个类的定义对于它的子类是不可见的,很难去继承.这个时候就可以考虑使用装饰者模式.
实现方式:
    1.首先是把被装饰的类对象传入装饰者的类对象中保存起来,然后一方面可以使用被装饰者原有的功能,另一方面可以对原有类的方法在数据传入时添加额外的操作,或在原有的类的方法在数据传出后再添加额外的操作.
    2.看到的一个例子首先是被装饰的类和装饰者类其实都是继承自一个父类,可以是接口也可以是一个抽象类.然后在装饰者类中会保存被装饰的类的实例,然后实现了要改变的被装饰类的一些方法,在这些方法中可以提供对传入的数据的额外的修改,或者是逻辑上的改变.
    3.然后就是自己的一些思考,其实装饰者类和被装饰类不一定都是一个父类的子类,只不过如果在一个子类下可以利用多态来让程序的一部分的代码减少变换,但是我觉得这不是装饰者模式的重点所在.我觉着装饰者模式主要是为了扩展功能,或是改变功能.那么其实俩者不在同一个子类下也是可以的.关键在于想要改变一些方法的功能,这时需要在以前的数据处理的过程中增加额外的处理,其实也很像一个过滤的过程,在原有的基础上再增加一层进行过滤.

原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/5740127.html