第二章商品促销——策略模式
需求:商品价格计算,并增加折扣条件
工厂模式UML图
在工厂模式中,调用端代码会通过折扣工厂类生成折扣对象,折扣对象调用折扣方法。这里关联了两个类,工厂类和抽象折扣类。
策略模式UML图
在策略模式中,会在策略环境类的构造器中完成折扣类的初始话,并在策略环境的实现方法调用折扣类的折扣算法。这样调用类只会关联策略环境类。
简单工厂模式需要的是生成的对象,所以在客户端代码中会存在工厂类和生成类,而策略模式关注的是相应算法,它并不关注算法类对象,所以在客户端代码中只会存在context环境类。这样降低代码耦合度。
代码
Context
public class SaleContext {
private SaleStrategy saleStrategy = null;
public SaleContext(String saleSelector) {
switch (saleSelector) {
case "打9折":
this.saleStrategy = new PercentSaleStrategy(0.9);