我的目标是让我的框架尽可能地与应用程序解耦(尽管我知道这并不完全可能)。
我在应用程序中使用了几种不同的常见类型的模型。。。映射器、数据对象和值对象。例如,UserMapper获取一个UserData对象并从数据库中收集信息,然后将其映射到一个UserValue对象中以在控制器中使用。
这意味着这些模型具有以下依赖关系:
- UserMapper:需要UserData和一种生成UserValue的方法
- UserData:需要Db(来自框架)
- UserValue:不需要任何东西
我是否在框架的DIC方法中包括创建Mapper对象、Data对象和Value对象的方法,以便可以自动注入依赖关系?或者我应该创建一个单独的DIC/Factory来处理业务层的东西吗?
我喜欢用创建对象的闭包来加载我的DIC。这样,所有对象只有在被请求时才被延迟加载,但在创建对象时,我仍然可以有很大的灵活性。
您可以这样写:数据映射器被赋予一个空白的uservalue对象,然后根据DB数据初始化对象的数据。另一种选择是让datamapper和uservalue类自己创建另一个,从而在它们之间创建紧密耦合。
试图将框架与业务逻辑分离并不意味着不允许两者接触,只是没有业务逻辑代码进入框架的代码中。使用DIC创建用于业务逻辑的对象并不意味着DIC中有业务逻辑。