简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 ——360百科
简单的说工厂是用来接收订单,生产产品的地方,简单工厂,就是说这个工厂有点简陋功能设备比较少。
举个生产汽车的例子:
既然是汽车工厂首先要有汽车这个实体的抽象类
public abstract class Car {
public abstract String getCar();
}
然后创建每一种汽车
public class Honda extends Car {
@Override
public String getCar() {
return "Honda";
}
}
public class Mazda extends Car {
@Override
public String getCar() {
return "Mazda";
}
}
public class Toyota extends Car {
@Override
public String getCar() {
return "Toyota";
}
}
创建工厂
public class CarFactory {
public String createCar(String carType){
Car car = null;
switch (carType){
case "Honda":
car = new Honda();
break;
case "Mazda":
car = new Mazda();
break;
case "Toyota":
car = new Toyota();
break;
default:
return "设备有限暂不支持生产" + carType;
}
return car.getCar();
}
public static void main(String[] args) {
CarFactory carFactory = new CarFactory();
System.out.println(carFactory.createCar("Mazda"));
System.out.println(carFactory.createCar("Audi"));
}
}
使用场景
工厂类负责创建的对象比较少。
客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心。
简单工厂模式优缺点
优点:
使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性。
缺点:
可实例化的类型在编译期间已经被确定,如果增加新类型,则需要修改工厂,违背了开放封闭原则 。 简单工厂需要知道所有要生成的类型,当子类过多或者子类层次过多时不适合使用。