装饰者模式,其实是动态的为某个功能类添加功能的一种模式。
当系统需要新的功能时,是向原有的类中添加新的代码,而新的代码又装饰了核心类的基本职责和行为;这种方法的问题在于,向类中添加新的属性,新的方法,新的逻辑,增加了基本类的复杂度。而新增加的功能是在某种特定的情况下才执行的行为。
装饰者模式就为这样的情况提供了很好的解决方案,将装饰功能写在一个独立的类中,使用装饰功能类包装需要添加装饰的对象,这种情况下,客户端就可以根据具体的需要按特定的顺序使用装饰功能包装对象。
这种模式的好处在于,能够将对象的核心行为和装饰功能分离,可以动态的给目标对象添加对应的装饰功能。