这个问题在这里已有答案:
存储库模式是一种设计模式吗?在Gang的四个设计模式列表中它不存在。如果它是一种设计模式,那么在哪种类型的模式下,即创造性,结构性或行为性。如果不是那么为什么。请清楚我的困惑?
Clasifying模式可能很难。确实,GOF书确实增加了模式类别,但大多数时候人们无法弄清楚某些东西是否是建筑风格的设计模式,更不用说模式的类别了。
Repository pattern是在GOF书之后发布的Patterns of Enterprise Application Architecture书中引入的。
从它的定义:
存储库在域和数据映射层之间进行调解...
我们可以说这是一种结构模式。
有时人们也使用Repository来创建对象,因此在这种情况下它也可以是Creational模式。
所以它取决于给予它多少责任,但大多数时候我们可以将它作为一种创造性模式进行分类。
作为一种模式,存储库有许多变体,很难将它放在一个类别中。关于它的讨论也很多:它有什么责任,应该如何实施等等。
不要提到人们开始使用带有映射层的存储库来支持ACID事务的数据库以及管理这些事务并保存对数据库的更改的Unif Of Work。
现在人们使用MongoDB和Event Sourcing并添加其他方法,如.Save。这些方法确实引起了很多讨论。