设计模式 (四) | 装饰者模式

Scroll Down

前言

前面我们将了工厂模式和策略模式,解决了if过多问题,怕修改导致大逻辑得到破坏,今天那我们来讲到装饰器模式,来解决订单的多种优惠结算问题

一、定义

  • 动态给对象添加一些额外职责,比生成子类更加灵活

二、解决问题

  • 在不改变对象基础上,动态给对象添加新的职责
  • 避免使用继承来拓展功能,从而避免类爆炸问题
  • 灵活控制对象功能拓展,不需要改原代码
  • 提升可读性和维护性

三、设计一个订单优惠券功能

3.1、步骤

  • 定义抽象订单order类,并定义总价格方法getPrice()
  • 创建商品订单类GoodsOrder,实现抽象类Order
  • 创建优惠装饰角色OrderDecorator,继承Order
  • 定义多个具体优惠装饰着角色’‘’‘’‘’’

3.2、代码实现