c – 依赖倒置原则:试图理解

我正在学习设计模式和它周围的东西(特别是SOLID和Dependency inversion原理),看起来我正在失去一些东西:

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

请解释一下我错在哪里.

解决方法:

你只需要遵循这个想法就可以得出它的逻辑结论.是的,你必须在其他地方创建实例,但这可能不仅仅是在类之上的类,它需要被推出,直到只在应用程序的最外层创建对象.

理想情况下,您在一个地方创建所有对象,这称为composition root(例外是从工厂创建的对象,但工厂是在组合根中创建的).具体取决于您正在构建的应用程序类型.

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

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

this excellent answer(上面引用)

上一篇:【转】iOS开发拓展篇—静态库


下一篇:对类对象之间的各种关系的重新理解