依赖注入 - 谁拥有接口?

时间:2009-11-13 19:55:28

标签: dependency-injection aop

假设我想在AOP方法中使用依赖注入框架,目标是生成代码模块。共享接口所有权的最佳实践是什么?所有权是指为了使用该接口而需要引用的代码体。

我的第一个猜测是,在AOP中,您将定义一个接口的类库,按方面命名。例如:company.aspect.logging.ILogger。然后,每个模块都会引用该库,并避免让任何涉及ILogger实现的代码定义ILogger。

最佳做法?

2 个答案:

答案 0 :(得分:1)

定义接口类库是一个好的开始。这为您提供了最大的灵活性,因为您可以完全独立地改变所有消费者和所有实施者。

这种方法的缺点是,如果您的接口本身导出其他类似的接口:

public interface IMyInterface
{
    IMyOtherInterface DoStuff();
}

您可能需要编写大量可以从接口填充具体类的映射代码(或者您可以使用AutoMapper)。

如果你只有一个消费者而只有几个使用者,你可以通过与消费者一起定义接口(从不与实施者一起)来节省一些这种映射,但是你会失去一些灵活性。但是,您仍然可以独立于消费者而改变实施者,而不是相反。

答案 1 :(得分:0)

这取决于界面的目的:

如果接口的目的是在一组替代供应商和单个消费者之间定义标准协议,则该接口由消费者拥有。

如果接口的目的是在单个供应商和一组替代消费者之间定义标准协议,则该接口由供应商拥有。

如果界面的目的是在一组替代供应商和一组替代消费者之间定义标准协议,那么界面就是它自己的。

最后,如果将接口用作降低复杂性的一般方法,它们通常由消费者拥有,并且应尽可能狭窄地定义,以便每个接口支持特定的消费者需求要求背景。

相关问题