策略模式
说明:策略模式需求跟简单工厂很类似,但优点是可以做到更低耦合,对外只暴露了策略上下文类
需求:超市有很多商品收费方法,有满减、打折等
解决方式:
a. 一个策略父抽象类,定义一个算法方法;
b. 分别定义子类策略类A、策略类B、策略类C;(继承)
c. 策略上下文类,构建方法,根据参数,实例化不同的策略类,并赋值给类声明的策略抽象类对象;
d. 策略上下文类,定义策略类算法方法(类声明的策略抽象类对象调用策略方法);
e. 客户A类实例化策略上下文类,输入对应的参数,上下文类实例化对应的策略类对象,策略上下文类调用算法方法。
需求变更:新增促销算法;
解决方式:
新增另外一种促销方式;
新增一个策略类D,策略上下文类实例化加入一个判断参数,实例化策略类D;
类图: