JAVA规划形式—战略形式ITeye - AG环亚娱乐

JAVA规划形式—战略形式ITeye

2019-01-14 05:08:25 | 作者: 越泽 | 标签: 形式,战略,扣头 | 浏览: 2932

                                                                          Strategy形式
战略形式介绍:
    有一组算法(行为),这些算法(行为)能够封装到一起的接口中,调用者依靠一起的接口,然后当算法被替换时,不影响调用者。

 

战略形式运用场景:

    1.类之间的差异仅在余行为,如:加减乘除操作

    2.客户端需求动态挑选算法

 

战略形式和工厂办法的差异:

   1.工厂办法回来的是目标

   2.战略形式回来详细核算后的值

 

战略形式结构图:

 

注意事项:

   1.Strategy自身并不决定在适宜,运用那种战略,Strategy只能供给算法的封装,以及通明的替换和移除算法。

   2.战略形式一般不用于嵌套。

       1.半年内买卖三次以上,在库龄扣头的基础上,7折出售

       2.一年内买卖三次以上的,在库龄扣头的基础上,9折出售

      

      以上用装修形式处理

 

引进问题:

   1.库龄半个月以上的,每顿减5块出售

   2.库龄1个月以上的,8折出售

   3.半年内买卖三次以上,在库龄扣头的基础上,7折出售

   4.一年内买卖三次以上的,在库龄扣头的基础上,9折出售

   5.其他没有扣头

 

代码规划:

 

/**
 * 扣头核算接口
public interface DiscountStrategy
 * 扣头核算
 * @return 核算后的价钱
 BigDecimal calculateDiscount();
}

 

/**
 * 战略消费上下文,持有扣头核算接口
public class DiscountContext
 private DiscountStrategy strategy;
 public DiscountContext(DiscountStrategy strategy){
 this.strategy = strategy;
 public BigDecimal executeDiscount(){
 return strategy.calculateDiscount();
}

 
 

/**
 * 库龄半个月的扣头
public class HalfMonthDiscountStrategy implements DiscountStrategy
 /** 固定扣头价钱 */
 private final double FIXED = 5.0;
 /** 每顿价格 */
 private String price;
 /** 吨总数 */
 private double tons;
 public HalfMonthDiscountStrategy(String price, double tons){
 this.price = price;
 this.tons = tons;
 @Override
 public BigDecimal calculateDiscount()
 BigDecimal p = new BigDecimal(price);
 return p.multiply(new BigDecimal(Math.abs(tons - FIXED)));
}

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章