标签:基类 数值 *** 设计模式 必须 装饰模式 模式 span 生成
一、含义
动态地给一个对象添加一些额外的职责。就增加功能来说, Decorator模式相比生成子类更为灵活。装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。
分析含义:以前如果要扩展功能,一般都是使用继承基类,然后根据不同的特征进行拓展,这样做会使得代码不够灵活,因为继承是在运行之前就写好了的,当我们想要改变或者增加一些东西时,会直接改变类,这就破坏了开放与关闭原则,装饰者原则使用组合的思想,相对比继承只能纵向扩展,装饰者使得可以横向组合,装饰者和本身的组件从源头上都是继承同一个接口,这样就可以利用多态,使得类型达到相同,从而使得相互组合变得容易。
二、举例
应用场景:为咖啡店设计订单系统,使得满足不同饮料的需求。
策略评价:
*******************************************************************************************
代码实现:
****************************************************************************************************************
测试类:
不论装饰者里面包裹的是装饰者还是基本材料,始终最里面包裹的是一个基本材料类,基本材料类相当于递归的出口,最后返回一个数值。
****************************************************************************
拓展:对于策略二中,cost函数应该如何写?
书中这个代码不完善我目前的思路是可以考虑设置一个枚举,装TALL、GRANDE、VENTI,然后在基本的set函数中需要对size字段传入相应的0、1、2进行传值,再进行对比。
标签:基类 数值 *** 设计模式 必须 装饰模式 模式 span 生成
原文地址:https://www.cnblogs.com/Nicela/p/14966345.html