存储库模式是否过度

时间:2010-08-04 11:45:03

标签: .net design-patterns domain-driven-design repository-pattern poeaa

我一直在使用Repository模式(DDD和POEAA)。然而,我们的一些团队成员认为它只是一个额外的抽象层而且是不必要的。 我可以看到他们的论点有一些好处。现代ORM解决方案(NHibernate或EF)几乎拥有您需要的一切。我搜索并在此主题上找到了一些类似thiscounterargument的文章。那么存储库模式是否过度了?

3 个答案:

答案 0 :(得分:12)

这主要取决于问题的复杂性以及域模型在解决方案中扮演的角色。对于简单的解决方案,Repository可能有点过分。但对于具有强大语言和不断变化的需求/需求的复杂域,Repository是一个很好的,干净的抽象,拥有域对象生命周期。许多ORM会做很多事情,但是,在复杂的域中,总会有一些在存储库中有意义的域活动,并且ORM不支持开箱即用。

底线:这取决于具体情况。

答案 1 :(得分:4)

在单元测试中模拟数据访问是我使用存储库接口的主要原因。可维护性的另一个原因 - 您可以轻松实现缓存策略,或切换到其他数据访问实现,例如从服务而不是数据库获取数据。

答案 2 :(得分:1)

我们在项目中使用存储库的一个原因是它强制执行我们的聚合根(我们只允许存储库用于AR),以便您正确地处理AR而不是查询您想要的任何攻击。

正如Al提到的那样..它确实提供了一个很好的界面来模拟单元测试。