此处以车辆(Vehicle)为例,有三种车:小轿车(Car)、公交车(Bus)、出租车(Taxi)。
public interface Vehicle {
/**
* 介绍说明
*/
void specification();
}
public class Car implements Vehicle {
@Override
public void specification() {
System.out.println("This is a Car.");
}
}
public class Bus implements Vehicle {
@Override
public void specification() {
System.out.println("This is a Bus.");
}
}
public class Taxi implements Vehicle {
@Override
public void specification() {
System.out.println("This is a Taxi.");
}
}
public enum VehicleType {
CAR,
BUS,
TAXI;
}
静态工厂模式通过静态方法访问,根据调用传入的参数选择不同的类型实例化返回。
随着车辆类型的增加/删除都需要改动工厂类,违反了开放-封闭原则。
public class VehicleFactory {
public static <T extends Vehicle> T create(VehicleType vehicleType) {
switch (vehicleType) {
case CAR:
return (T) new Car();
case BUS:
return (T) new Bus();
case TAXI:
return (T) new Taxi();
default:
throw new IllegalArgumentException("vehicle type is illegal: " + vehicleType);
}
}
}
public class VehicleCreator {
public static void main(String args[]) {
Car car = VehicleFactory.create(VehicleType.CAR);
car.specification();
Bus bus = VehicleFactory.create(VehicleType.BUS);
bus.specification();
Taxi taxi = VehicleFactory.create(VehicleType.TAXI);
taxi.specification();
}
}
输出:
This is a Car.
This is a Bus.
This is a Taxi.