依赖倒置原理:试图理解

混音

我正在学习设计模式及其周围的事物(尤其是SOLIDDependency Inversion原理),看起来好像在失去一些东西:

遵循DIP规则,通过不在类中创建对象(composition),而是将对象引用/指针发送到类构造函数(aggregation),我应该能够使类不那么脆弱但这意味着我必须在其他地方创建一个实例:因此带有聚合的一类越灵活,另一类就越脆弱。

请向我解释我哪里错了。

山姆·霍尔德

您只需要遵循该想法就可以得出合理的结论。是的,您必须将实例制作到其他位置,但这可能不只是在类之上的类中进行,它总是需要不断推出,直到仅在应用程序的最外层创建对象为止。

理想情况下,您可以在一个地方创建所有对象,这称为合成根(例外是从工厂创建的对象,但是工厂是在合成根中创建的)。确切的位置取决于您所构建的应用程序的类型。

  • 在桌面应用程序中,这将在Main方法中(或非常接近)
  • 在ASP.NET(包括MVC)应用程序中,该文件位于Global.asax中
  • 在WCF中,它将位于ServiceHostFactory中
  • 等等。

这个地方可能最终变得“脆弱”,但是您只有一个地方可以更改事物,以便能够重新配置您的应用程序,然后所有其他类都是可测试和可配置的。

看到这个出色的答案(上面引用)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章