根据不同的参数类型调用不同的实现是什么设计模式?

比如:

  1. 某系统对接了3个配送的平台,分别是平台A、平台B、平台C
  2. 对于上层业务来说,只要把自己的订单(这部分属性固定)对象作为参数,以及要配送的平台,比如平台A拿过来调用接口就行了
  3. 以后可能会增加平台D,在不修改接口的情况下,哪个设计模式可以做到灵活扩展的?
  4. 现在能想到的是,根据这个类型,调用不同的平台,接口内写了很多
    if(type==A_CODE){
    //调用平台A的下单接口}
    else if(type==B_CODE){
    // 调用平台B的下单接口
    }else if(type==C_CODE){
    //调用平台C的下单接口
    }

这样,想重构,有没有适合的设计模式?

阅读 23.2k
3 个回答

责任链,以后新增的平台只需要新增一个实现即可,配合 spi 美滋滋

新手上路,请多包涵

像是消除if..else...直接用个Map<Type,Impl>映射不同的实现类就行了,扩展一种类型就增加个key。算是策略模式?

策略模式是最适合的。

策略模式定义
策略模式(Strategy Pattern),将各种算法封装到具体的类中,作为一个抽象策略类的子类,使得它们可以互换。客户端可以自行决定使用哪种算法。

策略模式简单点说就是根据不同参数选择同一个接口的不同实现。

可以参考这篇文章 Java设计模式(十二) 策略模式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题