如何减少控制器和业务层服务中构造函数参数的数量

本文关键字:参数 构造函数 服务 控制器 何减少 业务 | 更新日期: 2023-09-27 18:15:43

这是这篇文章的重新措辞。

我发现使用中介模式可以有效地减少控制器中的参数数量。

然后我开始想这是否会是一个有效的域服务。

但是这不会隐藏服务的依赖关系吗?

我记得在某个地方读到过,如果我有一堆依赖被注入,我可能有一个更大的领域概念,可以封装在自己的服务中。我发现这是一个有效的模式。

那么,如何减少业务层服务中构造函数参数的数量呢?

如何减少控制器和业务层服务中构造函数参数的数量

太多的构造函数参数是一种代码气味,通常表明违反了单一责任原则 -所以你需要在你的SOLID代码库中注意这个"S"。

构造函数参数是一个依赖项。通过使用中介"解决"问题,您将仍然拥有相同数量的依赖项,只是使用更少的构造函数参数。从本质上讲,您从可见的SRP代码气味转移到隐藏的SRP代码气味——这并不是真正的进步。

改善"太多依赖"情况

这篇博文讨论了这个问题,并用一个例子来支持它。

改善这种情况的基本方法是找到围绕一组依赖项聚集的代码,并将这些代码提取到一个新的服务类中:

  1. 分析依赖关系如何相互作用以识别行为集群。
  2. 从这些集群中提取一个接口
  3. 将原实现复制到实现新接口的类中。
  4. 将新接口注入消费者。
  5. 用调用新的依赖项来替换原来的实现。
  6. 删除多余的依赖项