设计模式一之 策略模式

策略模式= 环境类+抽象策略类+具体策略类
环境基础框架:spring boot
优点:
去除代码的耦合性,将之前的if…else…替换,将算法封装到某个类中
遵序开闭原则

示例代码

环境类

@Service
public class SimpleContext {

/**map中的String是将具体策略类的名称映射进来**/
    @Autowired
    private final Map<String, Strategy> strategyMap = new ConcurrentHashMap<>();

    public String getStategy(String id) {
    //通过map.get()已经确定了到底使用哪个具体策略类,但是在debug的时候,没办法看到,是因为此时的类型还是interface
        return strategyMap.get(id).getVpcList(id);
    }
}

抽象策略类

public interface Strategy {
    String getVpcList(String id);
}

具体策略类 A

@Component("A")
public class ResourceA implements Strategy {

    @Override
    public String getVpcList(String id) {
        System.out.println("A,getVpcList ===========" + id);
        return id;
    }
}

具体策略类B

@Component("B")
public class ResourceB implements Strategy {

    @Override
    public String getVpcList(String id) {
        System.out.println("B,getVpcList ===========" + id);
        return id;
    }
}

备注:
以上的代码示例,自我感觉是不是最优解。看过一个博主的代码,是将if…else…的内容替换成具体策略类的自定义注解,这样就不用map.get()了,通过注解的类型自动去寻找具体的实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值