工厂模式可分为 1、简单工厂(Simple Factory) 2、抽象工厂(Abstact Fact) 3、工厂方法(Factory Method) 三种形态
### 简单工厂
简单工厂,既定义一个用于创建对象的接口,简单工厂一般有三个角色组成,分为工厂类,抽象产品,具体产品。
栗子: 某汽车厂有三条生产线,分别是 比雅帝、悍马、联箱 有人来买车的时候,就从 汽车工厂生产汽车。
抽象产品角色代码实现 Car.java
public abstract class Car {
// 子类共有的方法
public abstract void driver(String customName);
}
具体产品角色代码实现
BYD.java 类
public class BYD extends Car {
@Override
public void driver(String customName) {
System.out.println(customName + "的 比雅帝 驱逐舰05 时速888千米/小时");
}
}
LX.java 类
public class LX extends Car{
@Override
public void driver(String customName) {
System.out.println(customName + "的 联箱 时速333千米/小时");
}
}
HM.java 类
public class HM extends Car {
@Override
public void driver(String customName) {
System.out.println(customName + "的 悍马Plus dmi 时速666千米/小时");
}
}
工厂类角色代码实现 CarFactor.java
// 汽车工厂类,负责生产汽车
public class CarFactor {
public Car getCar(String name) {
if ("比雅帝".equals(name)) {
return new BYD();
} else if ("悍马".equals(name)) {
return new HM();
} else if ("联箱".equals(name)) {
return new LX();
} else {
return null;
}
}
}
编写代码测试简单工厂 SimpleFactorTest.java
public class SimpleFactorTest {
public static void main(String[] args) {
CarFactor carFactor = new CarFactor();
// 小明要来买 比雅帝 工厂类中取出
Car byd = carFactor.getCar("比雅帝");
byd.driver("小明");
// 张三要买 悍马
Car hm = carFactor.getCar("悍马");
hm.driver("张三");
// 李四要买 联箱
Car lx = carFactor.getCar("联箱");
lx.driver("李四");
}
}