【问题标题】:difference between a repository and factory pattern存储库模式和工厂模式之间的区别
【发布时间】:2010-11-09 09:50:10
【问题描述】:

能否请您概述一下存储库模式和工厂模式之间的区别?

【问题讨论】:

  • 顺便说一句,这两种模式是不相关的......

标签: c# oop design-patterns


【解决方案1】:

我认为区别在于两者的用法。

如果您想创建对象并用数据库数据填充这些对象,您将使用存储库。您可以拥有一个CustomerRepository,其中包含所有相关方法,用于检索和操作Customers

如果您想创建对象并用数据填充这些对象,请使用工厂。一个例子可以是ColorFactory。您可以用许多可能的 RGB 颜色填充该颜色,以便稍后使用。

如果您查看“保存”数据之类的内容,您还可以使用不同的词,例如:存储、保存和持久化。这三个都用于不同的目的,但它们可能会做同样的事情:-)

【讨论】:

    【解决方案2】:

    存储库模式处理创建一组数据访问服务,即。 CRUD 方法。 另一方面,工厂模式处理对象的创建方式。工厂类将有一个返回类的新实例的方法。

    两者是相互独立的;但是,您经常会看到工厂模式与存储库模式一起使用,以创建实体的新实例。

    【讨论】:

      【解决方案3】:

      The Factory pattern 用于创建对象,而the Repository pattern 描述了一种针对数据源封装 CRUD 操作的通用方法。

      【讨论】:

      • 你也可以说,...用于创建多个对象族。
      • 那么,如果我们需要在一些外部服务和本地 DbContext 之间创建关系,那么为此目的设计工厂是实现工厂的有效方式吗?然后在 UOW 中相应地创建存储库。
      • 问题:假设我需要创建一个对象实例,但我也想用数据库中的新数据填充该实例,也就是使用 CRUD 的“R”而创建一个对象。产生的模式叫什么?是 Factory 使用 Repository 作为对象创建的一部分吗?
      • 如果对象是用数据库中的数据填充的,那么从概念上讲,它不是一个新对象,因为数据已经存在。所以我会说它是一个存储库。
      猜你喜欢
      • 2011-01-30
      • 1970-01-01
      • 2017-07-31
      • 2011-01-06
      • 2016-12-24
      • 1970-01-01
      • 2010-10-11
      • 2011-07-16
      • 1970-01-01
      相关资源
      最近更新 更多