工厂方法模式

原创 2018年04月15日 22:15:43

1.概念

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

2.使用场景

  在任何需要生成复杂对象的地方,都可以使用工厂方法模式。直接用new可以完成的不需要用工厂模式

3.角色构成

  1)Product(抽象产品类):负责定义产品的共性,实现对事物最抽象的定义。
  2)ConcreteProduct(具体产品类):
  3)Creator(抽象创建类):也就是抽象工厂
  4)ConcreteCreator(具体创建类):具体产生一个产品的对象
工厂方法模式通用类图

4.通用源码

  1)抽象产品类

public abstract class Product {
    //产品类的公共方法
    public void method1() {
        //业务逻辑处理
    }
    //抽象方法
    public abstract void method2();
}

  2)具体产品类

public class ConcreteProduct1 extends Product {
    public void method2() {
        业务逻辑处理
    }
}
public class ConcreteProduct2 extends Product {
    public void mehod2() {
        //业务逻辑处理
    }
}

  3)抽象工厂类

public abstract class Creator {
    /*
     * 创建一个产品对象,其输入参数类型可以自行设置
     * 通常为String、Enum、Class等,当然也可以为空
     */
    public abstract <T extends Product> T createProduct(Class<T> c);
}

  4)具体工厂类

public class ConcreteCreator extends Creator {
    public <T extends Product> T createProduct(Class<T> c) {
        Product product = null;
        try{
            product = (Product) Class.forName(c.getName()).newInstance();
        } catch (Exception e) {
            //异常处理
        }
        return (T)product;
    }
}

  5)场景类

public class Client {
    public static void main(String[] args) {
        Creator creator = new ConcreteCreator();
        Product product = creator.createProduct(ConcreteProduct1.class);
        /*
         * 继续业务处理
         */
    }
}

5.优点

  1)良好的封装性,代码结构清晰。
  2)工厂方法模式的扩展性非常优秀。
  3)工厂方法模式是典型的解耦框架。

6.扩展

1)简单工厂

  简单工厂模式又称静态工厂方法模式。其缺点是工厂类的扩展比较困难,不符合开闭原则,但它仍然是一个非常实用的设计模式。

2)多个工厂类

  好处是创建类的职责清晰,而且结构简单,但是给可扩展性和可维护性带来了一定的影响。

3)替代单例模式

  通过获得类构造器,然后设置访问权限,生成一个对象,然后提供外部访问,保证内存中的对象唯一。

工厂方法模式(Factory Method)-最易懂的设计模式解析

前言在上文提到的最易懂的设计模式系列解析:简单工厂模式,发现简单工厂模式存在一系列问题: 工厂类集中了所有实例(产品)的创建逻辑,一旦这个工厂不能正常工作,整个系统都会受到影响; 违背“开放 - 关闭...
  • carson_ho
  • carson_ho
  • 2016-08-28 08:31:39
  • 7032

初识工厂设计模式

初识工厂设计模式这篇文章是我拜读完许多高手博客之后所记录的笔记,意义在于自己总结,想了解更多可以点击这里1、什么是工厂设计模式​ 根据搜索引擎,在面向对象程序设计中,工厂通常是一个用来创建其他对象...
  • YIII_TIAN
  • YIII_TIAN
  • 2017-12-12 19:50:17
  • 47

对工厂方法模式的理解

工厂方法模式,我想这里取名工厂方法模式,它的作用就是对这样一种抽象的架构进行一个基于场景的解释,所以我们在使用设计模式的时候,只要碰到了结构相似的情况,我们就可以套用这种设计模式,甚至是对这种设计模式...
  • wujiang88
  • wujiang88
  • 2016-01-21 16:33:27
  • 389

java/android 设计模式学习笔记(3)---工厂方法模式

这篇来介绍一下工厂方法模式(Factory Method Pattern),在实际开发过程中我们都习惯于直接使用 new 关键字用来创建一个对象,可是有时候对象的创造需要一系列的步骤:你可能需要计算或...
  • zhao_zepeng
  • zhao_zepeng
  • 2016-05-21 20:36:40
  • 9172

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

工厂方法模式简单介绍工厂方法模式是创建型设计模式之一。工厂方法模式是一种结构简单的模式,其在我们平时开发中应用很广泛。如 Android 中的 Activity 里的各个生命周期方法,以 onCrea...
  • AkaiC
  • AkaiC
  • 2016-10-29 22:20:44
  • 319

Java设计模式—工厂方法模式&抽象工厂模式

工厂方法模式与抽象工厂模式都是设计模式中重要而且常见的模式。 通用类图如下:         在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义;C...
  • qq_25827845
  • qq_25827845
  • 2016-09-11 15:07:17
  • 6118

工厂方法模式工厂方法模式

  • 2008年10月28日 13:50
  • 20KB
  • 下载

工厂方法模式--结合具体例子学习工厂方法模式

在学习工厂方法模式之前,可以先学习一下简单工厂模式,网址是http://blog.csdn.net/u012116457/article/details/21650421,这里仍以水果的实例讲解。  ...
  • u012116457
  • u012116457
  • 2014-03-22 00:00:13
  • 1404

工厂模式,工厂方法模式,抽象工厂模式 详解

1. 工厂模式 1.1 定义 简单工厂模式是由一个工厂对象根据收到的消息决定要创建哪一个类的对象实例。 1.2 使用场景 工厂类负责创建的对象比较少,客户只需要传入工厂类参数,对于如何创建对象(逻辑)...
  • wfg18801733667
  • wfg18801733667
  • 2017-03-09 10:02:25
  • 2587

创建型模式:工厂方法模式(Factory Method)--分析优缺点

转载地址:http://blog.csdn.net/lingyun_blog/article/details/41450085 请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的...
  • qq_25551295
  • qq_25551295
  • 2015-11-14 18:05:26
  • 523
收藏助手
不良信息举报
您举报文章:工厂方法模式
举报原因:
原因补充:

(最多只允许输入30个字)