我对工作单元模式和工厂模式感到困惑

时间:2019-01-29 20:35:34

标签: design-patterns factory unit-of-work

工厂模式来源https://en.wikipedia.org/wiki/Factory_method_pattern

在基于类的编程中,工厂方法模式是一种创建模式,该模式使用工厂方法来处理创建对象的问题,而不必指定将要创建的对象的确切类。这是通过调用工厂方法(而不是通过构造函数)来创建对象的,该工厂方法是在接口中指定并由子类实现,或者在基类中实现,并且可以选择由派生类覆盖。

我的问题是工作模式单元和工厂模式是否是同一模式,但我不确定其名称

3 个答案:

答案 0 :(得分:1)

  

我的问题是工作模式单元,工厂模式是   不确定使用相同模式但名称不同

您为什么认为它们是相同的模式?


我不得不让你失望的是,他们的模式不一样。尽管您已经找到并解释了handleSubmit = ev => { ev.preventDefault(); // prevent form submission return this.getApiResponse(); } 的{​​{1}}模式是另外一回事。

马丁·福勒(Martin Fowler):

  

维护受业务交易影响的对象的列表,以及   协调更改的写出。 (马丁·福勒(Martin Fowler)的“ Patterns of Enterprise Application Architecture

通常,它与factory一起使用,并且用于:

  • 维护在事务中已更改(插入,更新或删除)的内存中业务对象的列表。
  • 交易完成后,所有这些更新将作为一个发送 一次性将很大一部分工作物理地保留在数据库中。

您可以找到unit of workrepository pattern here的很好的解释。

答案 1 :(得分:1)

可能不一样。 工厂方法是一种 design 模式。 工作单元是一种对象关系行为模式。

答案 2 :(得分:0)

不,他们不一样。

您已经很好地理解了问题中所述的Factory模式,并且还链接了解释它的资源。我在这里不再赘述。

工厂模式是创建模式,其中UnitOfWork是行为模式。

工作单元(UoW)被注入到存储库中。 可以根据您的设计创建存储库;但是(存储库)的创建不是UoW的目标。根据设计,UoW在某些情况下可能扮演Factory的其他角色。

here所述:

  

工作单元会跟踪您在业务交易过程中可能影响数据库的所有操作。完成后,它会根据您的工作找出更改数据库所需要做的一切。

正如您在上面的引用中看到的那样,UoW的主要职责是跟踪业务交易中所做的更改,并在范围结束时清除(或丢弃)这些更改。

This问题详细讨论了有关UoW的问题;可能会帮助您。