1 设计原则
开放-关闭原则: 对扩展开放, 对修改关闭.
2 装饰者模式
动态地将 功能/责任 附加到对象上.
想要扩展功能, 装饰者提供有别于继承的另一种选择.
假设我们定义一个 形状接口Shape
, Shape
有个 draw()
方法用于画指定的形状. 它有两个实现 Circle
(实现画圆形)和 Rectangle
(实现画矩形). 现在我们想在不改变原有代码的基础上, 让 draw()
增加一个颜色功能, 即画的形状是附带颜色的.[1]
用 装饰者模式 实现的类图如下:
3 使用案例
Java 的 输入/输出 流 使用了 装饰者模式.
比如输入流 InputStream
使用 装饰者模式的片段:
Reference
[1]. Decorator Pattern - turorials point
[2]. Head First 设计模式
[3]. Java I/O 学习系列二: 字节流