本文从一个简单示例的需求不断衍化过程,来分析理解简单工厂,工厂方法,抽象工厂模式。
首先看一下初始示例
public interface Car {
public void drive();
}
public class BenzCar implements Car {
@Override
public void drive() {
System.out.println("Benz Car drived on the way!");
}
}
public class BmwCar implements Car{
@Override
public void drive() {
System.out.println("Bmw car drived on the way!");
}
}
public class PorscheCar implements Car {
@Override
public void drive() {
System.out.println("Porsche car drived on the way!");
}
}
public class Client {
public static void main(String[] args){
Car car;
car = new BenzCar();
car.drive();
car = new BmwCar();
car.drive();
}
}
客户端与具体的Car实现类耦合,我们想到优化的第一步是把获得汽车的工作转移到工厂类,使用简单工厂把生产Car的逻辑做一层封装实现解耦,于是有了下面的代码
public class SimpleCarFactory {
public Car createCar(String car){
Car newCar = null;
if("Benz".equals(car)){
newCar = new BenzCar();
}else if("Bmw".equals(car)){
newCar = new BmwCar();
}else if("Porsche".equals(car)){
newCar =