美文网首页
策略模式

策略模式

作者: 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