本文主要讲的是装饰器模式。 主要从什么是装饰器, 以及项目中装饰器模式的具体应用场景等几个方面来讲述。
概述
官方解释:允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
顾名思义: 装饰器模式, 就是对现有的接口进行装饰, 提供额外的功能。
在项目中的应用
收费规则
接之前提到的责任链模式(https://blog.csdn.net/wwsl123/article/details/97388626)
收费规则(收费规则,1分钟2元,前10分钟免费, 上限是20元。 VIP客户则免费1小时, 1小时1元, 上限5元),每个责任链节点都要判断时间是否满足条件。代码逻辑如下:
主要通过isOkCondition()方法来判断,是否满足条件。 即该方法需要判断时间是否满足条件。所以,相当于每个责任链节点都需要重写一遍判断逻辑(实际上代码都是一样的,只是输入的时间阈值不同)。造成了一定代码冗余。
因此,我们加入了装饰器模式, 对责任链节点的判断逻辑进行装饰增强,代码如下:
然后通过以下方法加入装饰器
最终,实现代码复用。 同时,为后续按次数收费的规则,打下基础(只需要新增按次的装饰器模式即可, 而不需要重写一个责任链节点)