设计模式之一装饰模式:以售卖咖啡,配料应用解读
以售卖咖啡,在咖啡中添加不同的配料为例,体验装饰模式的好处:
- 装饰模式介绍
- 应用背景
- UML设计
- 总结
装饰模式介绍
以生活中场景为例,在穿搭衣服时,不同的服饰和不同的顺序会产生不一样的结果。常规的穿法是先穿内裤再穿裤子,这是正常人的装扮。而也可以先传裤子,再穿内裤,这是超人的装扮。不同的顺序决定了最后装扮不同。而对于女生,沙滩裙和凉鞋是度假的装扮,衬衫裙和通勤鞋是上班的装扮。不同的服饰也决定了不同的装扮。
装扮的服饰是不固定的,顺序也不固定。怎样针对具体的情况封装不同的装扮呢?
这就是装饰模式的好处了,对于穿搭过程,内部构造不稳定的情况,使用装饰者模式。
两个重点:
SetCompont: 通过引用的方式,将上一层包装的对象传递到本层中,完成包装
重载装饰方法:调用本层的装饰函数,完成本层独有的装饰功能
应用背景
根据售卖咖啡的过程,客户先选择一种口味的咖啡,又选择不同种类的配料,由于配料选择是不定的,符合装饰模式的应用情况。
UML设计
SellCoffee是父类,Coffee类和Ingredient类是过程的子类。可视为使用Ingredient类装饰Coffee类。装饰函数为Add(),最后获得totalprice即可。
Coffee类和Ingredient类的名称和价格使用枚举的方式赋值。
代码下载:https://download.****.net/download/vainfanfan/10513112
###总结
装饰模式顾名思义,只是对装饰功能的一种封装。最大的好处是为程序动态的添加一种新的功能。动态即未必是所有情况都可以用到。这样就把程序的核心功能和装饰功能分开。
如果程序在之后的过程中需要有选择,按顺序的添加一种新的功能,就可以使用装饰模式。