设计模式——策略模式

        策略模式是一种行为型设计模式,它定义了一系列算法,将每个算法封装起来,并使它们可相互替换。这使得算法的变化独立于使用算法的客户端。简而言之,策略模式允许在运行时选择算法,而不是在编译时固定使用某种算法。     

策略模式主要包含以下角色:

  • 策略接口(Strategy Interface):它定义了所有支持的算法的通用接口,通过这个接口,所有的具体策略类都可以被调用。
  • 具体策略类(Concrete Strategies):它实现了策略接口,提供了具体的算法实现。
  • 环境类(Context):它持有一个策略接口的引用,用于执行具体的策略。

常见策略模式写法:

现在的业务需求:

 * 案例实现
 * 【例】一家百货公司,针对不同的节日推出不同的促销活动,由促销员将促销活动展示给客户。
 * 这里每种不同的促销活动就像当于一个个算法,可以使用于各个的活动

常见的策略模式,每有一种策略,就会有一个实现类。这样的话可能就会导致实现类过多的情况。这里不详细说常见策略模式的写法了。直接因此枚举类+map实现策略模式。

优雅的实现策略模式,可以通过map+枚举类实现。

//使用枚举类来实现策略模式的好处就是,如果策略过多,抽象的Strategy的实现类就会过多。而枚举类不用担心这点
public enum Strategy {
    A{
        @Override
        void exec() {
            System.out.println("春节优惠策略被执行");
        }
    },
    B{
        @Override
        void exec() {
            System.out.println("国庆优惠策略被执行");
        }
    },
    C{
        @Override
        void exec() {
            System.out.println("元旦优惠策略被执行");
        }
    }
    ;


    abstract void exec();
}
    public static void main(String[] args) {

        HashMap<String, Strategy> strategyHashMap = new HashMap<>();
        strategyHashMap.put("春节",Strategy.A);
        strategyHashMap.put("国庆",Strategy.B);
        strategyHashMap.put("元旦",Strategy.C);

        //这个str可以由前端传入,让用户选择执行哪种策略
        String str = "春节";
        strategyHashMap.get(str).exec();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值