Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 存储库模式是什么类型的?_Oop_Design Patterns_Repository_Repository Pattern - Fatal编程技术网

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

Oop 存储库模式是什么类型的?,oop,design-patterns,repository,repository-pattern,Oop,Design Patterns,Repository,Repository Pattern,一般来说,我知道有三大类型的设计模式 创作模式(工厂、单身等) 结构模式(组合、适配器、代理等) 行为模式(规范、命令等) 但是我不知道我可以将存储库模式放入哪种类型 存储库模式是否属于上述三种类型之一?或者是在(2)和(3)模式的中间吗?< /强> < P>一个知识库是结构的专门化。 < P>我假定你指的是Martin Fowler。< /P> 他说: Repository:使用类似集合的接口在域和数据映射层之间进行中介,以访问域对象 他自己将该模式归类为“对象关系元数据映射” 如果您想使用

一般来说,我知道有三大类型的设计模式

  • 创作模式(工厂、单身等)
  • 结构模式(组合、适配器、代理等)
  • 行为模式(规范、命令等)
  • 但是我不知道我可以将存储库模式放入哪种类型


    存储库模式是否属于上述三种类型之一?或者是在(2)和(3)模式的中间吗?< /强>

    < P>一个知识库是结构的专门化。

    < P>我假定你指的是Martin Fowler。< /P> 他说:

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

    他自己将该模式归类为“对象关系元数据映射”


    如果您想使用中的类别,我会将其放在structural pattern类别中,因为此模式的重点是向客户机呈现一个界面/视图,类似于适配器/外观/代理模式。

    存储库可以被视为一种特殊的外观(结构),但也可以被视为一种特殊的工厂(创造性)。此外,由于存储库经常公开类似集合的接口,因此它可能是迭代器(行为)的一个特殊应用程序


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

    我不确定创造性。存储库不会创建任何新对象,是吗?它会基于持久化数据创建一个新对象。从技术上讲但是在更高的抽象层次上,你可以认为这个对象是从商店里带回来的,而不是被创建的。再水化很少被储存库本身(主要被委派给ORM)执行。当你使用repo的
    Get…()
    方法时,你不会告诉自己“我想构造一个新对象”或“X个新对象”,所以称之为创造性对我来说有点奇怪。