【设计模式】装饰模式
装饰模式
装饰模式,动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活.
装饰模式就是为了给已有功能动态添加更多功能。
它解决的主要问题就是:
-
之前的代码如果要给ConcretePerson加功能,就要在这个类里添加对应的成员变量或者新的字段,新的逻辑。这样不仅违反了开闭原则还让这个ConcretePerson类变得很复杂。
-
而装饰模式,是把每个装饰的功能单独成类,并让这个类包装它所要装饰的对象。当需要执行这些特殊行为时,就可以有选择的按顺序的使用装饰。
更大的好处就是有效地把类的核心职责和装饰功能区分开了,而且可以去除相关类中重复的装饰逻辑。