一、什么是工厂模式
从名称可以看出来,工厂如同流水线一般,可以批量的创建具有相同类型的对象,同一对象的行为,常用的有
二、工厂模式如何实施
1.创建被生产者的顶层对象
如下我们先定义一个钢笔Pen作为顶层对象,他有一个方法来获取当前钢笔的名称。
public interface Pen {
String getName();
}
2.创建顶层对象的实现
相当于有不同的品牌,市面上有英雄牌的钢笔、派克钢笔等等,可以有很多种。
public class HeroPen implements Pen{
@Override
public String getName() {
return "英雄牌钢笔";
}
}
public class ParkerPen implements Pen{
@Override
public String getName() {
return "派克牌钢笔";
}
}
3.创建一个工厂用于生产
相当于我们创建一个工厂,用这个工厂来批量的生产不同平台的工厂,相当于贴牌。
public class SimpleFactory {
public Pen createPen(String name) {
if ("HeroPen".equals(name)) {
return new HeroPen();
}
if ("ParkerPen".equals(name)) {
return new ParkerPen();
}
return null;
}
}
4.类图
4.使用场景
- 线程池ThreadPoolExecutor中现成的创建就是通过ThreadFactory进行的
- Spring的FactoryBean其实也相当于一个bean的工厂