第一步先实现简单的功能:构建一个系统,给不同的人装饰上不同的衣物

《大话设计模式》——装饰模式学习

这种写法的不好的地方,如果需要新增装扮,就必须修改Person代码,不符合程序设计的开闭原则。以下第二种实现:

《大话设计模式》——装饰模式学习

《大话设计模式》——装饰模式学习

进一步改进,将程序改为装饰模式,动态的给一个对象添加额外的职责。

《大话设计模式》——装饰模式学习

《大话设计模式》——装饰模式学习

通过《大话》书中的这个装饰模式图来说明:

《大话设计模式》——装饰模式学习

主要是Decorator类来继承需要被装饰的类而且提供给其后续的子类扩展功能的接口。需要注意的是重写父类钟需要被装饰的方法。

《大话设计模式》——装饰模式学习

然后具体的装饰类中需要调用基类的被装饰的方法:

《大话设计模式》——装饰模式学习

该类中后面语句的就是对被装饰类——原类,进行添加新的功能。

装饰模式的好处:每个装饰对象的实现和如何使用这个对象分离,每个装饰对象只关心自己的功能,无需关心如何被引入到对象的引用中。

相关文章: