《设计模式之禅》笔记12 -- 装饰模式

来源:互联网 发布:.cx域名行情 编辑:程序博客网 时间:2024/05/23 23:49
定义:动态的给一个对象添加额外的职责。


装饰模式是一种特殊的代理模式,跟责任链模式也有相似之处。


一、装饰模式的四个角色


1. 抽象构建:定义原始对象,接口或抽象类。例如成绩单。


2. 具体构建:最核心、最原始、最基本的接口或抽象类的实现,要装饰的对象。


3. 装饰角色:一般是抽象类,实现接口或抽象方法,它里面有一个私有变量指向抽象构建。


4. 具体装饰角色


二、装饰模式的优点


1. 装饰类和被装饰类可以独立发展而不会相互耦合。抽象构建无需知道装饰角色的存在,装饰角色也不需要知道具体构建。


2. 装饰模式是继承关系的一种替代方案。不管装饰角色实现多少层,最终返回的都是抽象构建。


3. 装饰模式可以动态地扩展一个实现类的功能。


三、装饰模式的缺点


多层装饰比较复杂,尽量要减少装饰的个数,降低系统的复杂度。


四、装饰模式的使用场景


1. 需要扩展一个类的功能,或者给一个类增加附加功能


2. 需要动态的给一个类增加附加的功能,并且这些功能可以动态的组合


3. 需要为一批的兄弟类进行改装或加装功能


五、最佳实践


装饰模式是对继承的有力补充,并且扩展性非常好。例如有三个类:Father、Son、GrandSon,当需要扩展Son时,就可以通过新增SonDecorator来完成。
0 0
原创粉丝点击