我的目标是尽可能地将我的框架与我的应用程序分离(虽然我知道它并非完全可能)。
我在我的应用程序中使用了几种不同的常见类型的模型...映射器,数据对象和值对象。例如,UserMapper获取一个UserData对象并从数据库中收集信息,然后将其映射到UserValue对象,以便在Controller中使用。
这意味着这些模型具有以下依赖关系:
我是否在我的框架的DIC方法中包含了创建Mapper对象,Data对象和Value对象,以便依赖可以自动注入?或者我是否创建了一个单独的DIC / Factory来处理业务层的东西?
答案 0 :(得分:0)
依赖注入容器可以处理所有对象的创建。这包括使用工厂创建使用工厂模式的特定对象的DIC。
我喜欢用创建对象的闭包来加载我的DIC。这样,只有在请求时才会延迟加载所有对象,但在创建对象时我仍然可以拥有很大的灵活性。
您可以编写一种方式,为datamapper提供一个空的uservalue对象,然后根据DB数据初始化对象的数据。另一种方法是在datamapper和uservalue类之间建立紧密耦合,让它自己创建另一个。
尝试将框架与业务逻辑分开并不意味着不允许两者接触,只是没有业务逻辑代码进入框架的代码。使用DIC创建用于业务逻辑的对象并不意味着您的DIC中存在业务逻辑。