遵循多层软件架构,应用程序应由多个层组成。
(例如:表示层,业务层,数据访问层,......)
例如:
在MV *应用程序中,我们说"表示层可以看到模型层,但模型层不应该能够看到表示层"。
好的,没错!
但是在实际的应用程序中(例如:桌面应用程序),有一些" Bootstrap System"代码如:bootstrap应用程序,应用程序生命周期管理,加载UI系统,init资源等......
似乎" Bootstrap系统"可以看到应用程序中的所有内容,无论是" model"或"演示"。
我的问题是:" Bootstrap系统"应该在。
非常感谢。
-----------------------编辑此问题------------------ -----
非常感谢@Mark Seemann的回复。
IMO,"作文根"是应用程序的入口点,我们可以在其中构建全局对象(或使用DI容器)。
因此,#34;组合根"正在组成对象图。
但我的问题并不是专注于构建对象图,而是关注"分离问题"。
例如:
在MV *应用程序中,您有一个ApplicationManager对象来管理应用程序的生命周期。
在应用程序的入口点(例如:Main),我们可以构建ApplicationManager。
在同一个地方(应用程序的入口点),我们还构建了一些其他对象(例如:UI Framework,ResourceManager,DB Respoistry等)。
(注意:我们也可以使用DI Container代替穷人的DI,但它只是技术细节。)
当用户点击"按钮退出"在视图中,演示者将调用ApplicationManager.Quit()。
然后应用程序将退出。
显然,ApplicationManager.Quit()将释放所有内容,无论是" model"或者"演示",因此ApplicationManager可以看到应用程序中的所有内容。
我的问题是ApplicationManager应该在哪一层。(ModelLayer?表示层?组合根?)
注意:在这种情况下:ApplicationManager不是Composition Root,Main(或DI Container)是Composition Root。