我应该在多大程度上使用IoC?

时间:2011-03-30 06:00:54

标签: design-patterns inversion-of-control

我刚刚在一个非常小的项目中使用IoC,只需要测试一个对象。我现在开始将它实现到一个更大的现有项目中,我不确定是什么。

假设我有两个业务对象StudentTeacher都有一个名为IUnitOfWork的接口的构造函数注入,该接口具有SQLUnitOfWorkInMemoryUnitOfWork的具体实例。

因此,如果我正在使用这个库,我可以使用IoC来构建我的对象而不用担心,但是当我想在另一个内部使用它时会发生什么?所以说我懒得加载一个属性Student.Teacher并且需要获得一个新的Teacher对象,我该怎么办?

使用IoC容器来实现这一目标似乎不对,但是没有具体的对象。在每个使用的对象上使用IoC似乎过多。

2 个答案:

答案 0 :(得分:1)

我通常避免在域层中使用IoC - 您只想在应用程序层中尝试访问内核(其中,是的,您可能会非常访问内核)。

对于我的项目,我的所有业务对象通常都是POCO,除了框架内容之外几乎没有任何依赖。

服务层往往有很多依赖项,但不会经常直接访问内核。

您是否可以这样做取决于您选择的ORM等,当然还有项目的现有架构。

如果您的业务对象具有需要解析的依赖项,那么您将需要使用内核来解析它们,或者重构项目以删除依赖项。

答案 1 :(得分:0)

不要在Student和Teacher类(UnitOfWork)中使用依赖项,而是要有一个具有引用Student和Teacher类的依赖项的服务层。

这样,您的实体类可以是POCO,并且可以在测试中轻松模拟等。