设计模式之策略模式
策略模式主要目的是能够根据某些状态去使用不同的策略行为。对,它注重的是行为,和工厂模式的创建实例本身的侧重点是不同的。
看一下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---------
微信分享/微信扫码阅读
微信分享/微信扫码阅读