我使用Repository模式(DDD和POEAA)已经有一段时间了。然而,我们的一些团队成员认为这只是一个额外的抽象层,没有必要。我可以从他们的论点中看到一些好处。现代对象关系管理解决方案(NHibernate或EF)几乎拥有您需要的一切。我搜索并找到了一些关于这个主题的文章,比如this和counterargument。那么,存储库模式是一种过度杀伤力吗?
发布于 2010-08-04 19:52:03
这主要取决于问题的复杂性以及域模型在解决方案中所扮演的角色。对于简单的解决方案,Repository可能是过度杀伤力。但对于具有健壮的语言和不断变化的需求/要求的复杂领域,Repository是一个很好的、干净的抽象,它拥有域对象的生命周期。许多ORM都会做这方面的工作,但在一个复杂的领域中,总会有一些领域活动在存储库中是有意义的,并且开箱即用ORM不支持。
底线:这取决于上下文。
发布于 2010-08-04 19:53:06
在单元测试中模拟数据访问是我使用存储库接口的主要原因。可维护性的另一个原因-您可以轻松地实现缓存策略,或者切换到其他数据访问实现,例如从服务而不是从DB获取数据。
发布于 2010-08-05 00:50:45
我们在我们的项目中使用存储库的一个原因是,它强制我们的聚合根是谁(我们只允许AR的存储库),这样您就可以通过AR正确地工作,而不是查询任何您喜欢的东西。
就像艾尔提到的..。它确实提供了一个很好的接口,可以在单元测试期间模拟。
https://stackoverflow.com/questions/3405153
复制相似问题