【问题标题】:What type is repository pattern in?存储库模式属于什么类型?
【发布时间】:2014-06-06 11:17:57
【问题描述】:

总的来说,我知道有 3 大类型的设计模式

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

但我不知道我可以将存储库模式放入哪种类型。

存储库模式是上述三种类型之一吗?还是介于 (2) 和 (3) 模式的中间?

【问题讨论】:

    标签: oop design-patterns repository repository-pattern


    【解决方案1】:

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

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

    【讨论】:

    • 我不确定创作。存储库不会创建任何新对象,是吗?
    • 它基于持久化的Data创建一个新的Object。从技术上讲。但在更高的抽象层次上,您可以认为这个对象只是从商店中取回,而不是创建。
    • 如今,Rehydration 很少由存储库本身执行(主要委托给 ORM)。当您使用 repo 的 Get...() 方法时,您不会告诉自己“我想构造一个新对象”或“X 个新对象”,因此将其称为创建对我来说有点奇怪。
    【解决方案2】:

    存储库是Facade pattern 的特化,它是结构化的。

    【讨论】:

      【解决方案3】:

      我假设您指的是 Martin Fowler 的 repository pattern

      他说:

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

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

      如果您想使用GOF book 中的类别,我会将其放入结构模式类别中,因为该模式的重点是向客户端呈现界面/视图,类似于适配器/外观/代理模式。

      【讨论】:

        猜你喜欢
        • 2015-10-06
        • 1970-01-01
        • 1970-01-01
        • 2017-05-13
        • 2018-05-27
        • 2010-10-11
        • 2018-08-21
        • 1970-01-01
        • 2012-05-23
        相关资源
        最近更新 更多