美文网首页
策略模式

策略模式

作者: yym_439 | 来源:发表于2019-04-24 13:39 被阅读0次

定义

  • 封装了不同的算法,让他们可以相互替换,算法的变化不会影响使用算法的用户

类型:行为型

使用场景

  • 系统有很多类,而他们的区别在于行为不同
  • 一个系统需要动态的在几种算法中选择一种

优缺点

优点:

  • 开闭原则
  • 避免使用大量的条件转移语句(if...else...)
  • 提高算法的保密性和安全性

缺点:

  • 客户端必须知道所有的策略类,并自行决定使用哪一个策略类
  • 产生很多策略类

策略和工厂模式结合

public class PromotionStrategyFactory {

    private static Map<String, PromotionStrategy> PROMOTION_STRATEGY = new HashMap<String, PromotionStrategy>();

    static {
        PROMOTION_STRATEGY.put(PromotionKey.MANJIAN, new ManJianPromotionStrategy());
        PROMOTION_STRATEGY.put(PromotionKey.LIJIAN, new LiJianPromotionStrategy());
        PROMOTION_STRATEGY.put(PromotionKey.FANXIAN, new FanXianPromotionStrategy());
    }

    private static PromotionStrategy EMPRT_PROMOTION = new EmptyPromotionStrategy();

    private PromotionStrategyFactory() {
    }

    public static PromotionStrategy getPromotionStrategy(String PromotionKey) {
        PromotionStrategy promotionStrategy = PROMOTION_STRATEGY.get(PromotionKey);
        return promotionStrategy == null ? EMPRT_PROMOTION : promotionStrategy;
    }

    private interface PromotionKey {
        String LIJIAN = "LIJIAN";
        String MANJIAN = "MANJIAN";
        String FANXIAN = "FANXIAN";
    }
}

UML类图

image.png

相关文章

网友评论

      本文标题:策略模式

      本文链接:https://www.haomeiwen.com/subject/eumwgqtx.html