0

我正在使用实体框架模型优先方法构建一个 CRUD 应用程序。我的应用程序的结构方式是 UI 层和 DAL 都依赖于域层,而域层不依赖于任何东西。域层仅公开存储库和域对象接口。存储库在 DAL 中实现,并通过依赖注入提供给域层。与所有存储库一样,我的存储库公开了 getCustomer、deleteCustomer 等函数,但由于这些函数是在 DAL 中实现的,因此 DAL 必须能够创建遵守域层接口的对象。现在我的二元选择是我应该如何让它这样做:

4

1 回答 1

1

域层仅公开存储库和域对象接口。

在这种类型或架构(六边形架构)中,域对象不应该有接口,只有存储库。相反,让 DAL 直接创建(重构)域对象。将领域对象抽象为接口并没有任何好处,只有不必要的复杂性,例如工厂。

此外,正如 Heather 所指出的,抽象存储库通常也是一种不必要的复杂性。制作一个真正可跨实现移植的存储库抽象几乎总是徒劳的。在我看来,存储库抽象的主要好处是可以在没有接口的情况下实现封装——只需直接引用实现类即可。

于 2012-11-28T23:53:04.893 回答