工厂方法模式

Posted forthedream1991

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工厂方法模式相关的知识,希望对你有一定的参考价值。

1.基本概念

  • 工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,将类的实例化延迟到子类工厂
  • 解决的问题:简单工厂违背的开放-封闭原则等
  • UML图
  • 模式组成

  技术图片

2.代码实现

技术图片
package com.chengjie;

interface Product1 {
    void show();
}

interface Factory1 {
    Product1 createProduct();
}

class ProductA1 implements Product1 {
    @Override
    public void show() {
        System.out.println("ProductA1.show() is called!");
    }
}

class ProductB1 implements Product1 {
    @Override
    public void show() {
        System.out.println("ProductB1.show() is called!");
    }
}

class FactoryA implements Factory1 {
    @Override
    public Product1 createProduct() {
        return new ProductA1();
    }
}

class FactoryB implements Factory1 {
    @Override
    public Product1 createProduct() {
        return new ProductB1();
    }
}

public class TestFactoryMethod {
    public static void main(String[] args) {
        FactoryA fa = new FactoryA();
        fa.createProduct().show();

        FactoryB fb = new FactoryB();
        fb.createProduct().show();
    }
}
View Code

3.优点

  • 开放-封闭原则:简单工厂中违背的开放-封闭原则
  • 单一职责原则:一个工厂方法只负责一个产品的创建
  • 不使用静态方法模式,可形成继承结构

4.缺点

  • 增加了工厂类与多个接口

5.应用场景

  • 类不需要知道对象的类时,工厂方法只需要知道工厂即可

6.参考链接

  https://www.jianshu.com/p/d0c444275827

以上是关于工厂方法模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式-简单工厂工厂方法模式抽象工厂模式详解

工厂方法模式

设计模式-工厂方法模式(Go实现)

C++工厂模式(简单工厂工厂方法抽象工厂)

C++工厂模式(简单工厂工厂方法抽象工厂)

设计模式---工厂模式