waynblog

使用策略模式重构if/elseif/elseif

本文翻译自国外论坛 medium,原文地址:https://medium.com/aia-sg-techblog/refactor-if-elseif-elseif-using-strategy-design-pattern-80c51913a539


策略设计模式是一种允许在运行时选择算法的行为。这种模式

  • 定义了一系列算法
  • 封装每种算法
  • 使算法在该系列内可互换。

下面是策略设计模式的架构,客户端将在其中与上下文进行通信。上下文将包含对策略对象的引用,这反映了另一个设计原则 “针对接口而非实现编程”。

Image

让我们检查一下如何使用以下场景重构旧式 if else 语句。

Image

这种设计的问题在于,每当我们需要添加或修改任何传输方式时,它总是会影响业务逻辑的实现。

让我们使用策略设计模式重构紧密耦合的代码。

Image
策略接口及其实现
Image
上下文对象持有策略参考

客户端代码如下所示

Image

优点:

  1. 添加新策略不会干扰之前的任何代码。
  2. 移除/重构之前的任何策略都是灵活的。
  3. 易于单一测试。

·END·

关注公众号【waynblog】点击右下角“赞”和“在看”按钮第一时间获取博主精彩技术分享

往期原创热门文章推荐:

  1. 什么是好代码/坏代码?给普通人的图解示例

  2. 微服务开发:断路器详解

  3. 一套前后台全部开源的H5商城送给大家

  4. 怎样成为优秀的后端工程师

  5. 推荐一款优秀电商开源项目

  6. 让SQL起飞(优化)

  7. 推荐算法在商城系统实践

  8. 分享10个高级sql写法