定义
定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化不会影响到使用算法的用户
示例代码
public interface PromotionStrategy {
void doPromotion();
}
public class LIJIANPromotionStrategy implements PromotionStrategy{
public void doPromotion() {
System.out.println("立减促销");
}
}
public class MANJIANPromotionStrategy implements PromotionStrategy{
public void doPromotion() {
System.out.println("满减促销");
}
}
public class PromotionStrategyFactory {
static HashMap<String,PromotionStrategy> strategyHashMap=new HashMap<String,
PromotionStrategy>();
static {
strategyHashMap.put("LIJIAN",new LIJIANPromotionStrategy());
strategyHashMap.put("MANJIAN",new MANJIANPromotionStrategy());
}
private PromotionStrategyFactory(){
}
static PromotionStrategy getStrategy(String key){
return strategyHashMap.get(key);
}
}
public class PromotionActivity {
private PromotionStrategy promotionStrategy;
public PromotionActivity(PromotionStrategy strategy) {
promotionStrategy=strategy;
}
public static void main(String[] args) {
String type="LIJIAN";
PromotionActivity promotionActivity=new PromotionActivity(PromotionStrategyFactory.getStrategy(type));
promotionActivity.excuteStrategy();
}
private void excuteStrategy() {
promotionStrategy.doPromotion();
}
}
策略模式和工厂模式结合