`
newleague
  • 浏览: 1493298 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

JAVA设计模式——工厂方法(Factory Method)模式

阅读更多

一 、工厂方法(Factory Method)模式
   工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建.这样核心类成为一个抽象工厂角色.仅负责具体工厂子类必须实现的接口.这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品.

二、 工厂方法模式角色与结构
抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。
抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在上图中,这个角色是Light。
具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应.
   

三 一个简单的实例   
  // 产品 Plant接口
public interface Plant {
}
//具体产品PlantA,PlantB
public class PlantA implements Plant {

  public PlantA () {
    System.out.println("create PlantA !");
  }

  public void doSomething() {
     System.out.println(" PlantA do something ...");
  }
}
public class PlantB implements Plant {
  public PlantB () {
     System.out.println("create PlantB !");
  }

  public void doSomething() {
     System.out.println(" PlantB do something ...");
  }
}
// 产品 Fruit接口
public interface Fruit {
}
//具体产品FruitA,FruitB
public class FruitA implements Fruit {
  public FruitA() {
    System.out.println("create FruitA !");
  }
  public void doSomething() {
    System.out.println(" FruitA do something ...");
  }
}
public class FruitB implements Fruit {
  public FruitB() {
    System.out.println("create FruitB !");
  }
  public void doSomething() {
    System.out.println(" FruitB do something ...");
  }
}
// 抽象工厂方法
public interface AbstractFactory {
  public Plant createPlant();
  public Fruit createFruit() ;
}
//具体工厂方法
public class FactoryA implements AbstractFactory {
  public Plant createPlant() {
    return new PlantA();
  }
  public Fruit createFruit() {
    return new FruitA();
  }
}
public class FactoryB implements AbstractFactory {
  public Plant createPlant() {
    return new PlantB();
  }
  public Fruit createFruit() {
    return new FruitB();
  }
}

四、 工厂方法模式与简单工厂模式
1、工厂方法模式与简单工厂模式再结构上的不同不是很明显。工厂方法类的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。
2、工厂方法模式之所以有一个别名叫多态性工厂模式是因为具体工厂类都有共同的接口,或者有共同的抽象父类。
3、当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也不需要修改客户端,很好的符合了"开放-封闭"原则。而简单工厂模式在添加新产品对象后不得不修改工厂方法,扩展性不好。
4、工厂方法模式退化后可以演变成简单工厂模式。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/melin520/archive/2006/07/11/903918.aspx

分享到:
评论

相关推荐

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

    在这个压缩包中,`FactoryMethod`可能包含了Java实现工厂方法模式的源代码示例。 设计模式是一种在特定场景下解决软件设计问题的通用、可重用的解决方案,它代表了最佳实践,被广泛应用于各种编程语言中。工厂方法...

    Java设计模式——工厂设计模式详解

    Java设计模式——工厂设计模式详解 在软件设计中,工厂设计模式是一种常用的设计模式,主要用于实例化有共同接口的类。Java设计模式——工厂设计模式是Java中的一种常用的设计模式,主要用于实例化有共同接口的类。...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    1. **创建型模式**:包括单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype)。这些模式关注对象的创建过程,使得代码更加灵活,易于管理和扩展。...

    设计模式之“工厂方法模式[Factory Method Pattern]”

    今天我们要探讨的是设计模式中的一个经典成员——工厂方法模式(Factory Method Pattern)。工厂方法模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。 ### 一、什么是工厂方法模式? 工厂方法模式...

    设计模式-Java语言中的应用(pdf)

    《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。设计模式是软件工程领域中经过实践验证的、解决常见问题的有效方案,它们代表了在特定上下文中,针对特定问题的最优...

    java23种设计模式——图解——附带源码

    以上两种创建型模式,即工厂方法模式和抽象工厂模式,是Java设计模式中非常重要的一部分,它们可以帮助开发者更好地管理对象的创建过程,提高系统的灵活性和可扩展性。接下来的部分将继续探讨其他的设计模式。

    JAVA设计模式之工厂模式

    2. **工厂方法模式(Factory Method Pattern)**:将具体产品的创建延迟到子类,通过抽象工厂方法定义接口,子类实现该接口以创建特定的产品。 3. **抽象工厂模式(Abstract Factory Pattern)**:提供了创建一系列...

    java的设计模式 《设计模式-java语言中的应用.pdf》

    Java中的`AbstractFactory`、`SimpleFactory`和`FactoryMethod`都是工厂模式的不同变体,它们用于解耦对象的创建和使用。 3. **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体...

    JAVA设计模式(中文).chm

    1. **创建型设计模式**:这类模式主要关注对象的创建过程,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。...

    JAVA设计模式

    创建型模式关注对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)等,它们旨在提供一种更灵活、可扩展的对象创建方式。结构型模式涉及如何组合类和对象,如...

    JAVA设计模式--入门

    **Java设计模式——入门** 设计模式是软件开发中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。Java设计模式是面向对象编程中的一个重要概念,可以帮助开发者编写可复用、可维护、易于理解的代码。这...

    深入浅出设计模式(中文版电子版)

    3.2FactoryMethodPattern(工厂方法模式) 35 3.2.1定义 35 3.2.2现实例子——兵工厂 36 3.2.3C#实例——多文档系统 37 3.2.4Java实例——扩展了的手机工厂 41 3.2.5优势和缺陷 44 3.2.6应用情景 44 3.3...

    设计模式精解——GoF23中设计模式解析

    ### 设计模式精解——GoF23中设计模式解析 #### 重要性与起源 设计模式是软件工程领域的一项重要研究,它提供了一系列解决常见软件设计问题的模板。GoF23指的是由Erich Gamma、Richard Helm、Ralph Johnson和John ...

    Java设计模式经典搞笑珍藏版

    #### 六、工厂方法模式(Factory Method Pattern) 工厂方法模式提供了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂方法让类的实例化延迟到子类。 #### 七、抽象工厂模式(Abstract Factory Pattern) ...

    java 设计模式-个人总结

    ### Java设计模式——个人总结 #### 一、概述 本文档总结了常见的Java设计模式及其应用,涵盖了十种经典的设计模式,并提供了相应的代码示例。这些设计模式旨在解决软件开发过程中遇到的一系列常见问题,帮助...

    23种设计模式JAVA实现.pdf

    由于涉及内容较多,我们仅从给出的【部分内容】中挑出两种设计模式——工厂方法模式和抽象工厂模式,进行详细的知识点分析。 **工厂方法模式:** 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它...

    工厂类模型 应用

    本主题将深入探讨工厂类模型,包括简单工厂模式(Simple Factory Pattern)和工厂方法模式(Factory Method Pattern),并结合"课程演示"中的实例——AircraftFactory,来具体说明这两种模式的应用。 首先,简单...

Global site tag (gtag.js) - Google Analytics