创建型-工厂方法模式

1、工厂方法模式意图:

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。

2、应用场景:

考虑一个榨汁机的应用场景。榨汁机可以用来制作苹果汁、西瓜汁、橘汁等,即榨汁机可以用来制作水果汁。但是,夏天的冷饮店中,为了提高制作水果汁的效率和防止味道互串等情况,可能需要分别准备三个水果榨汁机,分别用来生产苹果汁、西瓜汁、橘汁等。

3、工厂方法模式类图:

角色

  • Product:定义工厂方法所创建对象。如场景描述中的果汁。
  • ConcreteProduct:实现Product中的接口,定义具体化的产品。如场景描述中的苹果汁、西瓜汁、橘汁等。
  • Creator:用于声明创建Product类型对象的工厂方法。如场景中的榨汁机这一概念。
  • ConcreteCreator:实现Creator中的工厂方法,专门用于产生具体的产品ConcreteProduct。如场景中的苹果榨汁机、西瓜榨汁机等。

协作

  • Creator依赖于它的子类来定义工厂方法。

4、适用性:

工厂方法模式跟工厂模式类似,其中工厂方法模式适合于构造同属于同一个类别的不同产品,所有的产品属于同一个系列中。

5、实例:

5.1 实例类图:

说明:店员(Waiter)使用不同的榨汁机来制作不同的水果汁,进而销售给顾客。

5.2 Waiter类:

除了用户类Waiter类之外,其他的类定义明了,故仅提供用户类。

1 public class Waiter{
2
3     public void sell(Juicer juicer){
4         Juice juice = juicer.MakeJuice();    //使用传入的特定的榨汁机来生产特定的水果汁
5
6         //卖给顾客,收钱
7     }
8
9 }

6、特点

  • 连接平行的类层次——工厂方法的每个子类用于产生平行的不同的具体产品,工厂子类同具体产品平行关系。

创建型-工厂方法模式,布布扣,bubuko.com

时间: 2024-12-09 18:23:26

创建型-工厂方法模式的相关文章

创建型 — 工厂方法模式(Factory Method)

引言:自己在项目中有这样一个代码逻辑,有一个接口,原来只有一个实现类,在创建它时就直接创建了.后来新增了需求,这个接口多了一个实现类.再对定义接口的实际对象时,需要根据传入的参数,判断到底利用哪一个实现类来创建.于是自己就在原来的代码处加了if-else,将对象的创建逻辑完全混杂在了原来代码处.当时自己觉得已经完美的解决了这个问题. 后来,请

【设计模式】工厂方法模式(Factory Method)

工厂方法模式 定义了一个创建对象的接口,但由子类决定要实现的类是哪一个.工厂方法让类把实例化推迟到子类.所有的工厂模式都用来封装对象的创建.工厂方法模式通过让子类决定改创建的对象是什么,来达到将对象创建的过程封装的目的. 工厂方法类图 示例:Pizza工厂类图 以生产Pizza作为示例,下面是具体的工厂方法类图和实现的代码: 抽象产品类 具体产品(类型A) 具体产品(类型B) 抽象工厂类 具体创建者(具体的工厂) 测试类和测试结果 来自为知笔记(Wiz)

Yii2 设计模式——工厂方法模式

工厂方法模式 模式定义 工厂方法模式(Factory Method Pattern)定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个.工厂方法让类吧实例化推迟到子类. 什么意思?说起来有这么几个要点: 对象不是直接new产生,而是交给一个类方法去完成.比如loadTableSchema()方法 这个方法是抽象的,且必须被子类所实现 这个提供实例的抽象方法需要参与到其他逻辑中,去完成另一项功能.比如loadTableSchema()方法出现在getTableSchema()方法中,参与实

设计模式(三) : 创建型模式--工厂方法模式

工厂方法模式区别与简单工厂模式主要在于,factory中对对象的实例化延迟到了子类的factory中, 这也是优于简单工厂的地方.下面看这个模式的类图(截自<java与模式>): 示意性代码: ? 1 2 3 4 5 6 7 package com.javadesignpattern.factorymethod; public interface Creator {          public Product fatcory(); } package com.javadesignpatte

第4章 创建型模式—工厂方法模式(2)

2. 工厂方法模式 2.1工厂方法模式的定义 (1)定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使一个类的实例化延迟到其子类 ①Product:定义了工厂方法创建对象的接口.也就是实际需要使用的产品对象的接口 ②ConcreteProduct:具体的Product接口的实现对象. ③Factory(Creator):定义了工厂方法的抽象类并返回一个产品对象. ④ConcreteCreator:具体的创建器对象,该类实现和覆盖了父工厂类声明的方法.返回一个具体的Product实例

Java设计模式(创建型:工厂方法模式+抽象工厂模式)

设计模式根据目的准则可以分为三类: 创建型:creational 创建型的设计模式与对象的创建有关. 结构型:Structural 处理类和对象之间的组合. 行为型:behavioral 描述类和对象如何交互及如何分配职责. 工厂方法模式 站在使用者的角度,工厂方法模式是指使用者提出想要实现的具体功能或者说是想要生产的具体的东西的要求,在通过工厂制造之后就将该东西或功能交付给使用者.使用者并不知道实现的具体过程,只是做了要求提出以及实现的结果的使用. 严谨来说工厂方法模式(Factory Met

JAVA设计模式(01):创建型-工厂模式【工厂方法模式】(Factory Method)

简单工厂模式尽管简单,但存在一个非常严重的问题.当系统中须要引入新产品时,因为静态工厂方法通过所传入參数的不同来创建不同的产品,这必然要改动工厂类的源码,将违背"开闭原则".怎样实现添加新产品而不影响已有代码?工厂方法模式应运而生,本文将介绍另外一种工厂模式--工厂方法模式. 1 日志记录器的设计 Sunny软件公司欲开发一个系统执行日志记录器(Logger).该记录器能够通过多种途径保存系统的执行日志,如通过文件记录或数据库记录,用户能够通过改动配置文件灵活地更换日志记录方式. 在设

Java设计模式(创建型:工厂方法模式)

(该文内容为原创,有不足之处望多多指教!) 设计模式根据目的准则可以分为三类: 创建型:creational 创建型的设计模式与对象的创建有关. 结构型:Structural 处理类和对象之间的组合. 行为型:behavioral 描述类和对象如何交互及如何分配职责. 工厂方法模式是什么? 站在使用者的角度,工厂方法模式是指使用者提出想要实现的具体功能或者说是想要生产的具体的东西的要求,在通过工厂制造之后就将该东西或功能交付给使用者.使用者并不知道实现的具体过程,只是做了要求提出以及实现的结果的

设计模式04: Factory Methord 工厂方法模式(创建型模式)

Factory Methord 工厂方法模式(创建型模式) 从耦合关系谈起耦合关系直接决定着软件面对变化时的行为 -模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之变更 -模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变 对代码的关注要在理解了设计模式之后,对于不同的代码但是解决的是同一类问题,他们就是同一种设计模式.解决了哪一类的问题就是哪一类的设计模式. 软件需求的变化是软件工程的一部分,是我们要解决的问题. 把模块分为主模块.次模块主模