`
Mr.TianShu
  • 浏览: 29180 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

工厂方法模式解析例子

阅读更多
Abstract: 工厂方法模式属于创建型模式,本文深入浅出的讲述了设计模式中的工厂方法模式,并给出了简单的示例,例子浅显易懂,并附带源代码。
 
工厂方法经常用在以下两种情况中:
第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况。
第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。
工厂方法的结构:

1工厂方法的结构
具体例子:这是一个简单的例子,来自《深入浅出设计模式》
2工厂方法UML
在这里Creator就是MobileFactory,工厂方法就是productMobile(),Concrete Creator 就是NokiaFactory,MotorolaFactory,抽象产品是Mobile,具体产品是MotorolaNokia,每个具体产品都实现了抽象方法call(),客户端创建一个具体工厂,调用工厂方法便可以生产一种Mobile,客户端最需要的最终产品便被创建了。
MobileFactory的源代码:
package factoryMethod;
public interface MobileFactory{
       public Mobile produceMobile();
}
Mobile的源代码:
package factoryMethod;
public interface Mobile{
    public void call();
}
MotorolaFactory的源代码:
package factoryMethod;
public class MotorolaFactory implements MobileFactory{
       public Mobile produceMobile(){
              return new Motorola();
       }
}
Nokia的源代码:
package factoryMethod;
public class Nokia implements Mobile{
       public void call(){
              System.out.println("Nokia producted");
       }
}
Client的源代码:
package factoryMethod;
public class Client{
       public static void main(String[] args){
              MobileFactory mbf = new NokiaFactory();
              Mobile mb=mbf.produceMobile();
              mb.call();
              mbf= new MotorolaFactory();
              mb=mbf.produceMobile();
              mb.call();
       }
}
使用场合:
当一个类不知道它所必须创建对象的类或一个类希望由子类来指定它所创建的对象时,可以使用工厂方法。

相关推荐

    设计模式工厂方法模式PPT学习教案.pptx

    在本学习教案中,我们使用了运算类的例子来讲解工厂方法模式。我们定义了一个抽象的运算类Operation,和四个具体的运算类OperationAdd、OperationSub、OperationMul、OperationDiv。然后,我们定义了一个抽象的工厂...

    反射简单工厂模式工厂模式

    本文将深入探讨"反射"以及两种常见的工厂模式:"简单工厂模式"和"工厂方法模式",并结合提供的文件名称来解析这些概念。 首先,我们来看"反射"。在Java等面向对象语言中,反射是一种强大的工具,它允许程序在运行时...

    PHP 工厂方法模式.pdf

    本文将深入探讨PHP中的工厂方法模式(Factory Method Pattern),并通过具体的例子来解释这一模式的应用场景及其优势。 #### 二、工厂方法模式定义 工厂方法模式是一种创建型设计模式,它提供了一个创建对象的最佳...

    XML解析器-简单工厂模式.doc

    《XML解析器与简单工厂模式》 XML(eXtensible Markup Language)是一种标记语言,广泛用于数据交换、配置文件存储等场景。在Java中,处理XML文档时,我们通常会使用解析器,其中SAX(Simple API for XML)解析器是...

    深入浅出设计模式四——比萨店生产比萨实现(工厂方法模式)

    本文将深入探讨“工厂方法模式”,并结合比萨店生产比萨的实例来解析这一模式的运用。首先,我们要理解工厂方法模式的核心思想:定义一个创建对象的接口,但让子类决定实例化哪一个类。这样,工厂方法可以把类的实例...

    设计工厂模式的例子,里面包含了两个例子

    本压缩包包含的“设计工厂模式的例子”提供了两个实际应用场景,旨在帮助理解和运用工厂模式。 工厂模式的核心思想是将对象的创建过程封装起来,通过一个共同的接口或抽象类来生产不同类型的实例,而不是让客户端...

    简单工厂模式的例子

    在这个例子中,我们将会深入理解简单工厂模式的概念、工作原理以及如何在实际编程中应用。 简单工厂模式的核心思想是定义一个工厂类,这个类负责创建对象,而客户端通过调用工厂类的特定方法来获取所需的对象。这样...

    Android源码学习之工厂方法模式应用及优势介绍

    本文将详细解析工厂方法模式的概念、结构、优势,并结合Android源码进行示例分析。 首先,工厂方法模式的核心思想是“定义一个用于创建对象的接口,让子类决定实例化哪一个类”。这种模式将对象的创建过程封装起来...

    Java设计模式04简单工厂模式.pdf

    此外,工厂类的职责相对单一,如果需要更多的控制和策略,可能需要考虑使用更复杂的工厂模式,如工厂方法模式或抽象工厂模式。 #### 三、模式扩展与注意事项 虽然简单工厂模式在许多场景下表现良好,但在一些情况...

    javascript工厂模式和构造函数模式创建对象方法解析.docx

    ### JavaScript工厂模式与构造函数模式创建对象方法解析 #### 一、工厂模式 在JavaScript中,工厂模式是一种常用的设计模式,用于封装创建对象的过程。它通过一个函数来创建具有相似特性的多个对象实例,这些对象...

    设计模式之简单工厂模式源码

    通过这个例子,我们可以理解简单工厂模式的主要优点: - **封装变化**:将对象的创建过程封装在工厂类中,避免了客户端代码与具体实现的直接耦合。 - **扩展性**:如果需要添加新的计算器类型,只需修改工厂类,而不...

    《Objective-C编程之道ios设计模式解析》电子书

    《Objective-C编程之道:iOS设计模式解析》是一本专注于探讨iOS应用开发中设计模式的专著。这本书深入浅出地讲解了如何在Objective-C编程环境中有效地应用设计模式,旨在提升开发者对iOS应用架构的理解和实践能力。...

    工厂模式的测试并有spring ioc的简单实现

    通过理解和实践这些例子,我们可以深入理解工厂模式的精髓,以及Spring如何通过IoC实现组件的松耦合。同时,对于【abstactFactory】,我们可以期待看到如何在Spring环境中实现更复杂的对象族创建。测试这些代码时,...

    Android 源码设计模式解析与实战 完整版带书签目录

    《Android 源码设计模式解析与实战》是一本深入探讨Android系统源码中设计模式应用的专业书籍。这本书全面解析了Android系统中的设计模式,并结合实际案例,为开发者提供了丰富的实战经验。书中涵盖的设计模式是软件...

    Android源码设计模式解析与实战.pdf

    在Android中,`LayoutInflater`就是工厂模式的一个典型例子。`LayoutInflater`可以根据XML布局文件创建出对应的View对象,而具体的实现则由各个子类根据不同的需求进行定制。 #### 2.3 观察者模式(Observer) 观察...

    个人写的Java工厂模式

    本文将详细解析工厂模式在Java程序设计中的应用。 首先,让我们回顾一下简单工厂模式的基本概念。简单工厂模式,也被称为静态工厂方法模式,它的核心是通过一个工厂类来创建对象。在这个模式中,工厂类负责决定实例...

    软件编程模式---工厂模式基础

    - **简单工厂模式(Simple Factory)**:也称为静态工厂方法模式,通过一个静态方法来创建产品对象,不涉及类的实例化。 - **工厂方法模式(Factory Method)**:定义一个创建对象的接口,让子类决定实例化哪一个类...

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码

    ### 设计模式精解—GoF 23种设计模式解析及C++实现源码 #### 0. 引言 设计模式作为一种重要的面向对象设计工具,在软件开发中扮演着至关重要的角色。本文旨在深入解析GoF(Gang of Four,四人组)提出的23种设计...

    建造者模式学习以及与工厂模式的区别

    1. 创建过程的复杂度:工厂模式通常用于创建简单的对象,而建造者模式则用于创建更复杂的对象,通过一系列步骤来构建。 2. 结构差异:工厂模式只有一个工厂类,而建造者模式包含导演类和多个建造者类。 3. 产品组装...

Global site tag (gtag.js) - Google Analytics