Decorator-装饰者模式
概述:
装饰边框与被装饰物的一致性,增加被装饰物的功能
说明:
1.本文仅仅是对 图解设计模式 的简单总结(个人笔记).
2.文章中的图片均来自本书,添加水印只是为了防止盗链行为,并无侵权的想法.
综上,若侵权, 请联系我删除!
转载请标注出处!
案例:
- 案例说明:
给蚊子添加装饰边框 (‘-‘,’+’,’|’等组成的边框)
- 主要代码:
- Main.java
package Gof.Decorator; public class Main { public static void main(String[] args) { Display b1 = new StringDisplay("Hello, world."); Display b2 = new SideBorder(b1, '#'); Display b3 = new FullBorder(b2); b1.show(); b2.show(); b3.show(); Display b4 = new SideBorder( new FullBorder( new FullBorder( new SideBorder( new FullBorder( new StringDisplay("你好,世界。") ), '*' ) ) ), '/' ); b4.show(); } }
- 代码链接:传送门
uml综述
- Component: 定义装饰前蛋糕的接口
- ConcreteComponent: 实现Component接口的具体蛋糕
- Decorator:内涵Component,Decorator角色知道自己要装饰的对象
- ConcreteDecorator: 实际装饰类
收获:
- 通过继承,装饰边框与被装饰物具有了相同的方法,从接口的角度而言,装饰物与被装饰物具有相同的方法就意味着他们具有一致性
- 接口的透明性,Decorator可以实现composite的递归形式
- Decorator 使用委托(弱关联)
- Decorator缺点是会导致生成许多功能相似的很小的类
- 继承–父类与子类的一致性
- 委托–自己和被委托对象的一致性
相关设计模式:
- Adapter: 适配两个不同的接口
- Strategy: 整体地替换算法来改变类的功能
注意:
此部分内容属于对GOF Design Pattern知识的初步认知阶段,参考书籍是结城浩的《图解设计模式》,简单易懂,十分推荐!
以上内容,作者一字一句码出来的,纯属不易,欢迎大家转载,转载是还请您表明出处。另外如果我有侵权行为,请在下方留言,确认后我会及时撤销相应内容,谢谢大家!
PS:欢迎大家来到我的小站,鸣谢!
猜你喜欢