Java设计模式(十九)--策略模式

简介

策略模式是定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。

未使用策略模式的代码

@Test
public void test(){

    String type = "1";
    if(type.equals("1")){
        System.out.println("Executing strategy A");
    }else if(type.equals("2")){
        System.out.println("Executing strategy B");
    }

}

上面的代码是没有使用策略模式的,需要使用if else依次判断type的值来选择对应的执行策略,如果说type值得数量比较多的时候,那就会导致有很多的if else,也会影响后续的维护。

使用策略模式

抽象策略类

public interface Strategy {

    void execute();

}

该类统一了所有具体的策略类中的方法。

具体策略类

public class ConcreteStrategyA implements Strategy {

    public void execute() {
        System.out.println("Executing strategy A");
    }

}

public class ConcreteStrategyB implements Strategy {

    public void execute() {
        System.out.println("Executing strategy B");
    }

}

将每一个type对应的策略封装成一个类。

环境类

public class Context {

    private static HashMap<String, Strategy> map = new HashMap<>();

    static{
        map.put("1",new ConcreteStrategyA());
        map.put("2",new ConcreteStrategyB());
    }

    public void executeStrategy(String type) {
        map.get(type).execute();
    }

}

通过该类封装所有的type对应的策略,并根据不同的type来选择不同的策略。

测试

@Test
public void strategyTest(){

    Context context = new Context();

    context.executeStrategy("2");

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值