工厂方法(1)vs工厂(2)vs Builder(3)模式

Ph0*_*n1x 10 oop design-patterns

什么是用例(1),(2),(3).什么是使用它的利弊.他们之间有什么区别?

Dev*_*van 30

工厂方法模式

此模式与Factory Pattern非常相似,客户端还要求Factory从类层次结构中获取特定类型的对象,但工厂类的Create方法将特定对象的创建委托给派生类并返回客户问的类型的类.实质上,您可以通过单点联系来创建类层次结构的多个对象.

您可以将此视为前往机票柜台(控制器)并通过提供您对机票类型(头等舱,行政人员或经济舱)的偏好来要求机票.用户不关心如何生成票证,即使在对象表示中,第一类和经济票据都是从基本票类派生的.

何时使用

  • 灵活性很重要(低耦合)
  • 对象可以在子类中扩展
  • 有一个特定原因可以选择一个子类而不是另一个子类 - 这个逻辑构成了Factory方法的一部分.
  • 客户端将职责委托给并行层次结构中的子类.


工厂模式或简单工厂模式

此模式与Factory方法模式非常相似.但与工厂方法模式不同,此模式稍微简单一些.Factory自身的Create方法不是将创建委托给子类,而是创建所需类型的实例并返回它.


生成器模式

在构建器模式中,创建对象的复杂任务封装在类或方法中.例如,考虑在快餐柜台订餐的情况.这顿饭通常包括汉堡,薯条和饮料.餐中的每个项目都有自己的创作过程.而不是客户必须处理每个项目的创建过程,这个任务由计数器处理,其中一个人订餐.当下订单时,作为柜台的人负责创建由三个项目组成的膳食并将该项目作为单个实例返回给顾客.

而另一位顾客可能会要求提供大型薯条和减肥食品.同样,订单柜台的人员负责建立与第一个订单不同的订单.从顾客的角度来看,总是放置订单和柜台,然后返回餐.

何时使用

  • 构造对象不是一项简单的任务
  • 子部分组成每个对象
  • 需要不止一种(其中具有差分子部分)终端对象是客户端要求的.对于不同的终端对象的这种需求可能发生,如果不是同时发生,至少在不同的时间点.

更多信息