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

时间:2016-11-01 11:52:34

标签: c# architecture mediator business-logic-layer domainservices

这是this SO post的重新措辞。

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

然后我开始怀疑这是否是一个有效的域名服务。

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

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

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

1 个答案:

答案 0 :(得分:3)

构造函数参数过多是代码异味,通常表示违反单一责任原则 - 因此您需要在SOLID中处理“S”代码库。

构造函数参数是依赖项。通过使用中介“解决”问题,您仍然可以使用相同数量的依赖项,只需使用较少的构造函数参数。你基本上从一个可见的SRP代码气味转移到一个隐藏的SRP代码气味 - 不是真的向前迈出一步。

改善“太多依赖”情况

This blog post讨论了这个确切的问题并通过一个例子来支持它。

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

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