1 介绍
工厂方法模式同样属于类的创建型模式又被称为多态工厂模式。
工厂方法模式的定义是创建一个产品对象的工厂接口, 将具体对象的创建工作交给子类。核心工厂类将不再负责产品的创建,只负责编写具体工厂类所需实现的接口。这样的好处是当程序需要更改时不需要修改具体工厂类的情况下引进新产品。
2 模式中的几个角色
抽象工厂
工厂方法模式中的核心工厂,任何其它的工厂必须要实现该工厂。具体工厂
具体工厂负责实现核心工厂中的方法,负责实例化对象。抽象角色
所有的实例类都必须实现的公共接口。具体产品
每个具体工厂所创建的实例类。
3 实现过程
- 3.1 实体类及其接口类
抽象角色: Fruit.class
public interface Fruit {
void eat();
}
具体产品类: Apple.class/Banana.class
public class Apple implements Fruit{
@Override
public void eat() {
System.out.println("吃苹果");
}
}
public class Banana implements Fruit{
@Override
public void eat() {
System.out.println("吃香蕉");
}
}
核心工厂类:FruitFactory.class
public interface FruitFactory {
public Fruit getFruit();
}
具体工厂类:AppleFactory.class/BananaFactory.class
public class AppleFactory implements FruitFactory{
@Override
public Fruit getFruit() {
return new Apple();
}
}
public class BananaFactory implements FruitFactory{
@Override
public Fruit getFruit() {
return new Banana();
}
}
测试demo:DemoTest.class
public class DemoTest {
public static void main(String[] args) {
Fruit apple = new AppleFactory().getFruit();
Fruit banana = new BananaFactory().getFruit();
apple.eat();
banana.eat();
}
}
4 工厂方法模式和简单工厂模式的比较
工厂方法模式的核心是在一个抽象工厂类上,而简单工厂模式的核心是在具体产品类上。
当系统需要添加一个新的产品对象时,工厂方法模式只需要添加一个具体对象和一个具体对象所对应的具体工厂对象,而不需要对核心工厂接口进行更改,很好的符合了“开放-封闭”的原则。
工厂方法模式退化后可以演变成简单工厂模式