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汽车正在行驶");
}
}
缺点:当需要添加新的功能模块时,虽然满足了开闭原则,但每次添加一个功能模块,需要添加两个类,比较累赘。