【发布时间】:2010-05-11 15:30:33
【问题描述】:
我刚刚查看了一个使用 nHibernate 的现有项目的源代码,发现每个实体类都创建了接口。例如 ICustomer 用于 Customer 类。我只是想知道这种模式的优势是什么,因为 ICustomer 主要包含属性和很少的方法。
【问题讨论】:
标签: .net nhibernate design-patterns domain-model
我刚刚查看了一个使用 nHibernate 的现有项目的源代码,发现每个实体类都创建了接口。例如 ICustomer 用于 Customer 类。我只是想知道这种模式的优势是什么,因为 ICustomer 主要包含属性和很少的方法。
【问题讨论】:
标签: .net nhibernate design-patterns domain-model
我会说不。接口将行为与实现分开,以便可以在不影响接口客户端的情况下交换后者。
如果您的域对象不需要不同的实现,我认为不需要接口。仅在需要动态代理生成或方面或更改实现时才引入它们。
【讨论】:
我不同意之前的 cmets...虽然,结合控制反转 (IoC) 和依赖注入等模式,它可以更轻松地将这些层彼此隔离。这简化了单元测试、模拟,并且还可以导致更松散耦合的架构。这仍然可以在没有接口的情况下实现,尽管您需要确保不密封类并使成员虚拟化,以便您仍然可以模拟,生成可拦截的代理等......最后,使用接口迫使您放弃与任何相关的假设一种具体的实现,而是专注于接口定义所代表的契约。
【讨论】: