为每个域对象创建一个接口是个好主意吗?

时间:2010-05-11 15:30:33

标签: .net nhibernate design-patterns domain-model

我只是查看使用 nHibernate 的现有项目的源代码,发现为每个实体类创建了接口。例如客户类的 ICustomer 。我只是想知道这种模式的优势是什么,因为 ICustomer 主要包含属性和极少数方法。

2 个答案:

答案 0 :(得分:9)

我会说不。接口将行为与实现分开,以便可以在不影响接口客户端的情况下交换后者。

如果域对象不需要不同的实现,我认为不需要接口。如果需要动态代理生成或方面或更改实现,则仅引入它们。

答案 1 :(得分:1)

我不同意之前的评论......虽然结合控制反转(IoC)和依赖注入等模式,但它可以更容易地将这些层彼此隔离。这简化了单元测试,模拟,并且还可以导致更松散耦合的体系结构。这仍然可以在没有接口的情况下实现,尽管您需要确保不密封类并使成员虚拟,这样您仍然可以模拟,生成可拦截的代理等等...最后,使用接口会强制您放弃与任何相关的假设一个具体的实现,而是专注于接口定义所代表的契约。