美文网首页
工厂方法模式

工厂方法模式

作者: 守住阳光 | 来源:发表于2018-07-09 10:01 被阅读0次

一、概念

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

二、UML类图

三、基本代码实现

1、 Product 接口,定义所创建对象的接口

public interface Product {

}

2、 ConcreteProduct1 ,具体的产品,实现了Product接口

public class ConcreteProduct1 implements Product{

}

3、声明工厂方法,该方法返回一个 Product类型的对象

public interface Creator {

        Product factoryMethod();

}

4、 Product1Creator ,重定义工厂方法以返回一个 ConcreteProduct实例

public class Product1Creator implements Creator{

        public Product factoryMethod(){

                  return new ConcreteProduct1();

        }

}

5、测试类

public class Main {

        public static void main(String[] args) {

                Creator creator = new Product1Creator();

                Product product = creator.factoryMethod();

        }

}

四、总结

        工厂方法模式由简单工厂演变而来。简单工厂模式最大的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关类,对于客户端来说,去除了具体的产品依赖。但是,如果增加一个新的产品对象,就需要在工厂类的条件分支语句中增加新的case或者if语句来实现产生新的对象实例。这个不符合开放-封闭原则(对扩展开放,对修改封闭)。

        工厂方法模式把工厂类抽象出一个接口,这个接口只有一个方法,就是创建抽象产品对象的方法。所有要生产具体产品类的工厂,就去实现这个接口。这样一个简单工厂模式的工厂类,变成了一个抽象工厂接口和多个具体生成对象的工厂。

        有一点,工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现产品对象的创建,选择判断的问题还是存在的,也就是说,工厂方法将简单工厂的内部逻辑判断移到了客户端代码来进行。

相关文章

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 设计模式-工厂方法模式

    1、工厂方法模式(Factory Method) 工厂方法模式分为三种: 普通工厂模式 多个工厂模式 静态工厂模式...

  • 设计模式 工厂模式

    工厂模式 工厂模式三大类1、简单工厂模式(静态工厂方法模式)2、工厂方法模式3、抽象工厂模式(Kit模式) 简单工...

  • python设计模式 - 工厂模式之工厂方法

    python 环境 工厂方法模式简介 工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

  • 建造模式

    包括:简单工厂、工厂方法、抽象工厂、单例模式、多例模式、建造模式、原始原型模式。 简单工厂:又名静态工厂方法模式,...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • 设计模式学习--工厂方法模式

    模式定义 工厂方法模式又称工厂模式,也叫虚拟构造器模式或者多态工厂模式,它属于类创建型模式。在工厂方法模式中,工厂...

  • 五分钟精通设计模式(三)之工厂方法模式

    工厂方法模式分为三种: 普通工厂方法模式、多个工厂方法模式、静态工厂方法模式 废话不多说,下面直奔主题,实现步骤:...

网友评论

      本文标题:工厂方法模式

      本文链接:https://www.haomeiwen.com/subject/ijyauftx.html