仓储模式和工厂模式的区别

40

请您概述存储库模式与工厂模式之间的区别。


4
顺便提一句,这两个模式没有关联。 - Mitch Wheat
4个回答

66

2
你也可以说,...是用于创建多个对象系列的。 - Saif Khan
如果我们需要在外部服务和本地DbContext之间建立关系,那么设计一个工厂来实现这个目的是否是一种有效的方式?然后在UOW中相应地创建存储库。 - yardpenalty.com
3
问题:假设我需要创建一个对象实例,但我还想使用数据库中的新数据来填充该实例,也就是在创建对象时使用CRUD中的“R”。这种模式被称为什么?它是使用存储库作为对象创建的一部分的“工厂”吗? - Dennis
如果对象已经填充了来自数据库的数据,那么从概念上讲它不是一个新对象,因为数据已经存在。所以我会说它是一个仓储。 - RHa

29

仓储模式(Repository Pattern)用于创建一组数据访问服务,即增删改查方法。

而工厂模式(Factory Pattern)则涉及对象的创建方式。一个工厂类将有一个返回类的新实例的方法。

这两者是相互独立的;然而,通常会看到工厂模式与仓储模式一起使用,以创建实体的新实例。


1
我认为两者的区别在于用途。
如果您想创建对象并填充这些对象与数据库数据,您将使用一个存储库。您可以拥有一个名为“CustomerRepository”的存储库,其中包含检索和操作“Customers”的所有相关方法。
如果您想创建对象并填充这些对象与数据,则使用工厂。例如,可以使用“ColorFactory”来填充许多可能的RGB颜色,稍后可以使用它们。
如果您查看“保存”数据之类的东西,您也可以使用不同的单词,如:存储、保存和持久化。尽管它们可能做相同的事情,但这三个单词都用于不同的目的。 :-)

0

-> 工厂模式

工厂模式用于在类无法预测需要创建的对象类型的情况下使用。该模式用于封装对象创建逻辑,使得可以在不修改现有代码的情况下更容易地向应用程序中添加新类型的对象。

-> 仓储模式

仓储模式是一种设计模式,用于将从数据源检索数据的逻辑与处理数据的业务逻辑分离。它提供了一种集中访问数据的方式,并将底层数据存储细节抽象出来,使其与业务逻辑分离。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接