提问者:小点点

违反了哪些设计类原则,如何解决?


我认为违反的原则可以是开闭的,但我如何解决这个问题?

public void driveCar(Car car) {
    if(car instanceof PersonalCar){
        ((PersonalCar) car).drive();
    }else if (car instanceof SportCar){
        ((SportCar) car).driveFast();
    }
}

共2个答案

匿名用户

是的,开闭原则,因为如果你添加了一种新型汽车,你还必须修改driveCar的方法。要解决这个问题,需要消除条件(if语句),并用继承替换它们,并重写每个car子类中的drive()方法。我将把实现留给您来完成。

匿名用户

  1. 这是个好问题,我每天都会遇到这种情况