介绍
工厂方法模式是创建型设计模式之一。工厂方法模式是一种结构简单的模式。
定义
定义一个用于创建对象的接口,让子类决定实例化哪个类。
使用场景
在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂对象。
UML类图
UML类图如下:

这里的角色主要分为四个模块:
- 抽象工厂Factory,其为工厂方法的核心;
- 具体工厂ConcreteFactory,实现了具体的业务逻辑;
- 抽象产品Product,是工厂方法模式所创建的产品的父类;
- 具体产品ConcreteFactory,实现抽象产品的某个具体产品的对象;
实现
小明是一家汽车厂的厂长,对他来说,组装汽车就是讲一些进口的核心部件,比如发动机和一些零部件组装起来,小明的汽车厂主要组装某款SUV车型,比如Q3、Q5,对于这类车型来说内部结构差异并不是很大,因此小明只需要一条生产线就足以应付这2种车型,对于该类生产线小明提供一个抽象类定义:
|
|
生产线的具体实现类:
|
|
对于这两种车型,除了一些车的基本共性之外,还提供了自动导航功能,这些都使用一个抽象的基本类来声明:
|
|
接下来就是具体的车型了:
|
|
最后我们将各个类组装起来形成一条完整的流水线:
|
|
总结
总的来说,工厂方法模式是一个很好的设计模式,但是也存在缺点,就是每次我们为工厂方法模式添加新的产品时就要编写一个新的产品类,同时还要引入抽象层,这必然导致类结构的复杂化,所以工作中需要权衡。