UML类图如下:
“`
/**
* 工厂设计模式
* 一个抽象工厂类,可以派生出多个具体产品类。
* 可以使用工厂模式代替使用new方法返回对象。
* JDK中应用:
* java.util.Calendar#getInstance()
* java.sql.DriverManager#getConnection()
*/
public class FactoryDesign {
interface Car{
public void run();
}
class UnkownCar implements Car{
@Override
public void run() {
System.out.println("unknown mark car is running");
}
}
class Audi implements Car{
@Override
public void run() {
System.out.println("Audi is running");
}
}
class Volkswagen implements Car{
@Override
public void run() {
System.out.println("Volkswagen is running!");
}
}
enum CarType{
AUDI,VOLKSWAGEN,UNKOWN
}
class CarFactory{
public Car buildCar(CarType type){
if( type==CarType.AUDI)
return new Audi();
if( type==CarType.VOLKSWAGEN){
return new Volkswagen();
}
return new UnkownCar();
}
}
public static void main(String[] args) {
CarFactory factory = new FactoryDesign().new CarFactory();
Car audiCar = factory.buildCar(CarType.AUDI);
audiCar.run();
Car volkswagenCar = factory.buildCar(CarType.VOLKSWAGEN);
volkswagenCar.run();
}
}
“`