相比于静态工厂模式,工厂模式进一步的解耦,为每个类型创建一个工厂类,所有的工厂类都实现同一个工厂接口,通过不同的工厂类创建不同的实例。
public interface VehicleFactory {
Vehicle create();
}
public class CarFactory implements VehicleFactory {
@Override
public Vehicle create() {
return new Car();
}
}
public class BusFactory implements VehicleFactory {
@Override
public Vehicle create() {
return new Bus();
}
}
public class TaxiFactory implements VehicleFactory {
@Override
public Vehicle create() {
return new Taxi();
}
}
public class VehicleCreator {
public static void main(String args[]) {
VehicleFactory carFactory = new CarFactory();
Vehicle car = carFactory.create();
car.specification();
VehicleFactory busFactory = new BusFactory();
Vehicle bus = busFactory.create();
bus.specification();
VehicleFactory taxiFactory = new TaxiFactory();
Vehicle taxi = taxiFactory.create();
taxi.specification();
}
}
This is a Car.
This is a Bus.
This is a Taxi.