简单工厂模式

简单工厂模式

简单工厂(Simple factory)理解:

According to definition from wikipedia, Factory Pattern is “A factory is an object for creating other objects”. Simple Factory Pattern is a Factory class in its simplest form (In comparison to Factory Method Pattern or Abstract Factory Pattern). In another way, we can say: In simple factory pattern, we have a factory class which has a method that returns different types of object based on given input.

有一个工厂类,根据不同的输入返回不同的对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class SimpleFactory {
private static final Logger LOG = LoggerFactory.getLogger(SimpleFactory.class);
public static IExcelExport createExcelExport(FileType fileType){
LOG.info("简单工厂");
IExcelExport excelExport=null;
switch (fileType){
case EXCEL_2003:
excelExport=new Excel2003Export();
break;
case EXCEL_2007:
excelExport=new Excel2007Export();
}
return excelExport;
}

三个关键词:方法、入参、返回值

方法

负责创建对象的方法,可以叫做工厂方法

  1. 在加简单工厂模式中,为了简单,往往将这个方法定义成static,方便使用
  2. 一个工厂类中可以包含多个这样的方法,建议一个模块使用一个工厂类即可。

入参

根据这个入参决定创建哪种类型的对象

  1. 入参的一般是常量或者枚举,便于方法里面的seich语句或者其他分支的语句进行判断
  2. 也有人喜欢直接传递一个Class类(需要实例化的对象),但是不推荐,因为违反了工厂模式的宗旨。

返回值

工厂方法创建的是一类对象,所以返回值类型常常是一个接口,也可以是抽象的父类,而不会是一个具体的类。

痛点

不符合开闭原则,同样的,如果需要增加一个,需要修改工厂类的代码