首先,对不起我的英语不好,我希望你明白我在说什么。
这是我的问题:
假设我有一个 MVC 应用程序,包括标准路由器、控制器、模型(服务)层和某种数据库连接器。
模型层依赖于数据库连接器,控制器依赖于模型/服务,顶层“应用程序”类依赖于路由器和控制器。
我的对象层次结构如下所示:
App -> ControllerFactory -> ServiceFactory -> DAO -> DbConnection
也许,上面写的看起来不是最好的应用程序架构,但我想关注另一件事:
当我试图实例化一个 App 类时,我应该将所有依赖项传递给实例化的类;类依赖项又具有自己的依赖项,依此类推。
结果,我立即实例化了所有层次结构堆栈。但是如果我在某些情况下不需要访问数据库怎么办?如果某些控制器用于在没有模型交互的情况下渲染静态模板怎么办?
我的意思是,如果在某些特殊情况下类不需要自己的依赖项(在某些情况下确实需要)怎么办?我应该有条件地注入依赖项还是什么?
我真的被困在这一点上,我不知道该怎么办。