public class Client {
public static void main(String[] args){
try{
Car car = BMWFactory.produceCar();
car.drive();
}catch (Exception e){
System.out.println(e.getMessage());
}
}
}
public interface CarFactory {
public static Car produceCar() {
return null;
}
}
public class BMWFactory implements CarFactory{
public static Car produceCar() {
System.out.println("BMW汽車工廠正在製造汽車");
return new BMWCar();
}
}
public class QOROSFactory implements CarFactory{
public static Car produceCar() {
System.out.println("QOROS汽車工廠正在製造汽車");
return new QOROSCar();
}
}
public interface Car {
public void drive();
}
public class BMWCar implements Car {
public void drive(){
System.out.println("BMW汽車正在行駛");
}
}
public class QOROSCar implements Car{
public void drive(){
System.out.println("QOROS汽車正在行駛");
}
}
缺點:當需要添加新的功能模塊時,雖然滿足了開閉原則,但每次添加一個功能模塊,需要添加兩個類,比較累贅。