简单工厂模式不是23种设计模式中的一种,但却是最基础的创建性设计模式。
抽象产品与具体产品之间可以是泛化也可以是实现关系。简单工厂与具体产品为依赖关系。
通过一个简单的汽车工厂例子阐述简单工厂设计模式的原理。
public class SimpleFactoryDemo {
interface Car {
void run();
void stop();
String brand();
}
static class BMW540Li implements Car {
@Override
public void run() {
System.out.println("BMW540Li启动");
}
@Override
public void stop() {
System.out.println("BMW540Li停止");
}
@Override
public String brand() {
return "宝马";
}
}
static class AudiA7 implements Car {
@Override
public void run() {
System.out.println("AudiA7启动");
}
@Override
public void stop() {
System.out.println("AudiA7停止");
}
@Override
public String brand() {
return "奥迪";
}
}
static class CarFactory {
public static Car factory(String carName) {
switch (carName) {
case "BMW540Li":
return new BMW540Li();
case "AudiA7":
return new AudiA7();
default:
throw new IllegalArgumentException("工厂不生产该车");
}
}
}
public static void main(String[] args) {
Car car = CarFactory.factory("BMW540Li");
car.run();
car.stop();
car.brand();
}
}