天天看点

HeadFisrt 设计模式03 装饰者

类应该对扩展开放, 对修改关闭.

所谓装饰者模式, 是指用其他的类来装饰某个类,

装饰者说白了就是使用 has-a 来代替 is-a

咖啡店, 有很多种咖啡, 咖啡里还要增加一些 milk, 面包片啊, 等等. 针对加的东西不同, 计算出来的费用不同, 那么我们需要怎么做呢?

1. 首先创建一个 coffee 基类(有抽象的cost方法)

2. 黑咖啡, 原味咖啡, 等咖啡继承 coffee 基础类, 是 is-a的关系

3. 创建一个装饰基础类, 用来装饰咖啡( 有抽象的cost方法)

3. milk, 面包片等是用来装饰咖啡的, 比如黑咖啡中加入milk, 所以继承装饰基类

比如你计算费用时, 所有装饰者的费用自己就可以调用计算.

HeadFisrt 设计模式03 装饰者
HeadFisrt 设计模式03 装饰者
HeadFisrt 设计模式03 装饰者
HeadFisrt 设计模式03 装饰者
HeadFisrt 设计模式03 装饰者
HeadFisrt 设计模式03 装饰者
HeadFisrt 设计模式03 装饰者
HeadFisrt 设计模式03 装饰者