Java设计模式——创建型模式:工厂方法模式

95 阅读1分钟

什么是工厂方法模式?

我们通过工厂方法模式,将类的创建交给工厂类来完成与管理,从而实现将具体的被创建类与框架解耦。

这样做带来的好处是:

  • 由工厂方法来决定生成实例的方式
  • 高度抽象,当需要添加新的类让工厂方法管理时,只需要让新的类继承父类即可

工厂方法模式中的角色

看一下工厂方法模式中拥有哪些角色:

  • 创建者 Creator
    • 抽象类,负责定义生成产品的方法
    • 不需要在意具体产品的实现细节
  • 产品 Product
    • 抽象类,定义方法
  • 具体的创建者 Concrete Creator
    • 负责实现方法
  • 具体的产品 Concrete Product
    • 负责实现方法

工厂方法模式的类图

image-20220721165603700.png

最简单的实现

文件目录结构:

image-20220721172723759.png

Factory.java

定义抽象方法由具体的工厂实现类去实现,这些方法的功能可以有:

  • 生成实例并完成初始化
  • 将实例交给工厂类的容器管理——例如ListMap

定义一个 final 方法 create() 负责获取实例,需要进行一系列处理,并且防止被实现类重写。

public abstract class Factory {

    protected abstract Product factoryMethod1();
    protected abstract void factoryMethod2();

    public final Product create() {
        Product product = factoryMethod1();
        factoryMethod2();
        return product;
    }
}

Product.java

public abstract class Product {

}

ConcreteFactory.java

public class ConcreteFactory extends Factory{

    @Override
    protected Product factoryMethod1() {
        System.out.println("实现类的具体执行1........");
        return new ConcreteProduct();
    }

    @Override
    protected void factoryMethod2() {
        System.out.println("实现类的具体执行2........");
    }
}

ConcreteProduct.java

public class ConcreteProduct extends Product{

}