Mix*_*Mix 3 c++ design-patterns composition aggregation dependency-inversion
我正在学习设计模式和它周围的东西(特别是SOLID和Dependency inversion原理),看起来我正在失去一些东西:
遵循DIP规则,我应该能够通过不在类(组合)中创建对象,而是将对象引用/指针发送到类构造函数(聚合)来使类不那么脆弱.但这意味着我必须在其他地方创建一个实例:因此,具有聚合的一个类越灵活,另一个类就越脆弱.
请解释一下我错在哪里.
你只需要遵循这个想法就可以得出它的逻辑结论.是的,你必须在其他地方创建实例,但这可能不仅仅是在类之上的类,它需要被推出,直到只在应用程序的最外层创建对象.
理想情况下,您在一个地方创建所有对象,这称为组合根(例外是从工厂创建的对象,但工厂是在组合根中创建的).具体取决于您正在构建的应用程序类型.
这个地方可能最终变得"脆弱",但你只有一个地方可以改变事物,以便能够重新配置你的应用程序,然后所有其他类都是可测试和可配置的.
看到这个优秀的答案(上面引用)