设计模式之策略模式

策略模式主要目的是能够根据某些状态去使用不同的策略行为。对,它注重的是行为,和工厂模式的创建实例本身的侧重点是不同的。

看一下UML图:

三要素:

  • Context对象
  • 接口类
  • Strategy实现类

一个简单的例子:

电商促销活动中,可能有多种形式的促销类型,可以制定不同促销策略来完成不同的促销算法。

先定义抽象类:

/**
 * 优惠策略
 */
public interface PromotionStrategy {

    public void reduce();
}


/**
 * 直降策略
 */
public class PriceReduceStragegy implements PromotionStrategy {

    @Override
    public void reduce() {

    }
}


/**
 * 买赠策略
 */
public class GiftReduceStragegy implements PromotionStrategy {

    @Override
    public void reduce() {

    }
}


/**
 * 直赠策略
 */
public class ReduceStragegyContext {

    private PromotionStrategy promotionStrategy;

    public ReduceStragegyContext(PromotionStrategy promotionStrategy){
        this.promotionStrategy = promotionStrategy;
    }

    public void reduce(){
        this.promotionStrategy.reduce();
    }
}



调用时:
ReduceStragegyContext reduceStragegyContext = new ReduceStragegyContext(new GiftReduceStragegy());
reduceStragegyContext.reduce();

--------EOF---------
微信分享/微信扫码阅读