什么是工厂方法模式?
我们通过工厂方法模式,将类的创建交给工厂类来完成与管理,从而实现将具体的被创建类与框架解耦。
这样做带来的好处是:
- 由工厂方法来决定生成实例的方式
- 高度抽象,当需要添加新的类让工厂方法管理时,只需要让新的类继承父类即可
工厂方法模式中的角色
看一下工厂方法模式中拥有哪些角色:
- 创建者
Creator- 抽象类,负责定义生成产品的方法
- 不需要在意具体产品的实现细节
- 产品
Product- 抽象类,定义方法
- 具体的创建者
Concrete Creator- 负责实现方法
- 具体的产品
Concrete Product- 负责实现方法
工厂方法模式的类图
最简单的实现
文件目录结构:
Factory.java
定义抽象方法由具体的工厂实现类去实现,这些方法的功能可以有:
- 生成实例并完成初始化
- 将实例交给工厂类的容器管理——例如
List、Map
定义一个 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{
}