定义:
简单工厂模式最大的问题在于:核心位置的工厂类承担了过多的职责,它需要知道创建所有产品的细节。当需要新增一个产品时,不得不修改工厂类源码,违背了“开闭原则”。工厂方法模式提供一组与产品等级结构相对应的工厂结构来分别创建产品。
**工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式(Factory Pattern)
工厂方法提供一个抽象工厂接口来声明工厂方法,其具体创建产品的逻辑由相应的工厂类实现。不同的工厂类创建不同的产品。
uml类图:
经典代码:
Factory.java
interface Factory{
public Product factoryMethod();
}
FactoryA.java
class FactoryA implements Factory{
public Product factoryMethod(){
return new ProductA();
}
}
FactoryB.java
class FactoryB implements Factory{
public Product factoryMethod(){
return new ProductB();
}
}