存储库模式是什么类型的?

Vu *_*yen 13 oop design-patterns repository repository-pattern

总的来说,我知道有三种大型的设计模式

  1. 创作模式(工厂,单身等)
  2. 结构模式(复合,适配器,代理等)
  3. 行为模式(规范,命令等)

但我不知道我可以将Repository模式放入哪种类型.

存储库模式是否属于以上三种类型之一?或者它是在(2)和(3)模式的中间?

Bar*_*low 16

存储库可以被视为一种特殊的外观(结构),但也可以被视为一种特殊的工厂(创造).此外,由于Repository经常暴露类似集合的接口,因此它可能是Iterator(行为)的特殊应用程序.

我想说的是,这些类别和模式本身都不是任何一种明确的学说.只有一些想法和语言试图使它们更明确可见.这些类别只是试图以某种方式表达某些模式的帮助.模式也只是通用松耦合原理的各种表达.他们的边界模糊不清.

  • 这些天,Rehydration 很少由 Repository 本身执行(主要委托给 ORM)。当您使用 repo 的 `Get...()` 方法时,您不会告诉自己“我想构造一个新对象”或“X 个新对象”,因此将其称为创建对我来说听起来有点奇怪。 (2认同)

dev*_*tal 6

存储库是Facade模式的一种特殊化,它是结构化的.


Psi*_*siX 5

我假设您是参考Martin Fowler 的存储库模式

他说:

存储库:使用类似集合的接口访问域对象,在域和数据映射层之间进行中介。

他本人将模式归类为“对象关系元数据映射”。

如果要使用GOF手册中的类别,我会将其放在结构化模式类别中,因为该模式的重点是向客户端呈现接口/视图,类似于Adapter / Facade / Proxy模式。