我正在探索依赖注入,到处都在使用术语组合根。那么这是什么呢?
发布于 2011-06-08 19:10:01
合成根是应用程序中使用依赖注入容器进行应用程序对象图合成的单一位置(虽然这是如何完成的并不重要,但它可以使用容器,也可以使用pure DI手动完成)。
应该只有一个地方会发生这种情况,并且您的容器不应该在组合根之外使用。
引用以下链接的答案之一:
实际上,这意味着您应该在应用程序的根目录中配置容器。
桌面应用程序中的
中
有一个很好的答案here,它解释了更多关于这方面的内容。
另请参见this answer。
发布于 2017-12-23 21:30:13
Mark Seemann写了一篇关于Composition设计模式的优秀文章。
本文的要点是:
合成根是应用程序中模块组合在一起的唯一位置(最好是)。
只有应用程序才应该有合成根。库和框架不应该这样做。
DI容器只能从组合根引用。所有其他模块都不应该引用容器。
http://blog.ploeh.dk/2011/07/28/CompositionRoot/
考虑到这些原则,我编写了自己的JavaScript依赖注入框架,称为Di-Ninja
https://github.com/di-ninja/di-ninja
据我所知,是javascript中唯一实现了Composition Root设计模式的,它的文档可能是另一个很好的例子来演示它是如何工作的。
它可以与NodeJS、浏览器(使用Webpack或UMD/AMD)和原生反应一起使用。
https://stackoverflow.com/questions/6277771
复制相似问题