存储库模式是一种设计模式吗? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

存储库模式是一种设计模式吗?在Gang的四个设计模式列表中它不存在。如果它是一种设计模式,那么在哪种类型的模式下,即创造性,结构性或行为性。如果不是那么为什么。请清楚我的困惑?

asp.net design-patterns
1个回答
1
投票

Clasifying模式可能很难。确实,GOF书确实增加了模式类别,但大多数时候人们无法弄清楚某些东西是否是建筑风格的设计模式,更不用说模式的类别了。

Repository pattern是在GOF书之后发布的Patterns of Enterprise Application Architecture书中引入的。

从它的定义:

存储库在域和数据映射层之间进行调解...

我们可以说这是一种结构模式。

有时人们也使用Repository来创建对象,因此在这种情况下它也可以是Creational模式。

所以它取决于给予它多少责任,但大多数时候我们可以将它作为一种创造性模式进行分类。

作为一种模式,存储库有许多变体,很难将它放在一个类别中。关于它的讨论也很多:它有什么责任,应该如何实施等等。

不要提到人们开始使用带有映射层的存储库来支持ACID事务的数据库以及管理这些事务并保存对数据库的更改的Unif Of Work

现在人们使用MongoDB和Event Sourcing并添加其他方法,如.Save。这些方法确实引起了很多讨论。