根据不同的参数类型调用不同的实现是什么设计模式?
比如:
- 某系统对接了3个配送的平台,分别是平台A、平台B、平台C
- 对于上层业务来说,只要把自己的订单(这部分属性固定)对象作为参数,以及要配送的平台,比如平台A拿过来调用接口就行了
- 以后可能会增加平台D,在不修改接口的情况下,哪个设计模式可以做到灵活扩展的?
- 现在能想到的是,根据这个类型,调用不同的平台,接口内写了很多
if(type==A_CODE){
//调用平台A的下单接口}
else if(type==B_CODE){
// 调用平台B的下单接口
}else if(type==C_CODE){
//调用平台C的下单接口
}
这样,想重构,有没有适合的设计模式?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
像是消除if..else...直接用个Map<Type,Impl>映射不同的实现类就行了,扩展一种类型就增加个key。算是策略模式?
策略模式是最适合的。
策略模式定义
策略模式(Strategy Pattern),将各种算法封装到具体的类中,作为一个抽象策略类的子类,使得它们可以互换。客户端可以自行决定使用哪种算法。
策略模式简单点说就是根据不同参数选择同一个接口的不同实现。
可以参考这篇文章 Java设计模式(十二) 策略模式
责任链,以后新增的平台只需要新增一个实现即可,配合
spi
美滋滋