前言
前面我们将了工厂模式和策略模式,解决了if过多问题,怕修改导致大逻辑得到破坏,今天那我们来讲到装饰器模式,来解决订单的多种优惠结算问题
一、定义
- 动态给对象添加一些额外职责,比生成子类更加灵活
二、解决问题
- 在不改变对象基础上,动态给对象添加新的职责
- 避免使用继承来拓展功能,从而避免类爆炸问题
- 灵活控制对象功能拓展,不需要改原代码
- 提升可读性和维护性
三、设计一个订单优惠券功能
3.1、步骤
- 定义抽象订单order类,并定义总价格方法getPrice()
- 创建商品订单类GoodsOrder,实现抽象类Order
- 创建优惠装饰角色OrderDecorator,继承Order
- 定义多个具体优惠装饰着角色’‘’‘’‘’’