当前位置: 首页 > 知识库问答 >
问题:

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

马嘉勋
2023-03-14

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

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

共有2个答案

米项禹
2023-03-14
  1. 这是个好问题,我每天都会遇到这种情况
葛驰
2023-03-14

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

 类似资料:
  • 本文向大家介绍设计用例原则有哪些?相关面试题,主要包含被问及设计用例原则有哪些?时的应答技巧和注意事项,需要的朋友参考一下 100%的覆盖需求 编写测试用例的方法 大纲法 等价类 边界值 因果图 场景法 正交法 错误推断法 BUG的优先级 P1应立即修复的问题 P2在产品发布之前必须修复的问题 P3如果时间允许应该修复的问题 P4可以在发布版本中存在的问题 P5可改可不改,无伤大雅

  • 现在,让我们来看看“燃料”类: 以上是完成的所有抽象类,现在让我们看看具体的实现。首先,fuel的两个具体实现,包括一些贫血接口,以便我们可以正确地键入-提示/嗅探它们: 最后,我们有了车辆的具体实现,它确保使用正确的燃料类型(接口)为特定的车辆类别加油,如果不兼容则抛出异常: null

  • 本文向大家介绍使用HTML5需要遵守哪些设计原则?相关面试题,主要包含被问及使用HTML5需要遵守哪些设计原则?时的应答技巧和注意事项,需要的朋友参考一下 合适的使用语义化标签 合适指合适的场景,如: 1、自然语言表达能力的补充; 2、适合机器阅读的整体结构

  • 问题内容: 我的情况与Code Complete中Steve McConnell 提到的情况非常相似。我唯一的问题是基于车辆,而三轮车恰好是根据法律,属于汽车。到目前为止,汽车只有四个轮子。无论如何,我的域都不必要地复杂,因此很容易遵循下面的cats示例。 对重写例程并且在派生例程中不执行任何操作的类要保持怀疑。这通常表明基类的设计存在错误。例如,假设您有一个Cat类和一个例程Scratch(),

  • 主要内容:1.迪米特法则,2.高内聚,3.松耦合,4.代码,5.总结1.迪米特法则 迪米特法则的英文翻译是:Law of Demeter,缩写是 LOD。 单从这个名字上来看,我们完全猜不出这个原则讲的是什么。不过,它还有另外一个更加达意的名字,叫作最小知识原则,英文翻译为:The Least Knowledge Principle。 它不像 SOLID、KISS、DRY 原则那样,人尽皆知,但它却非常实用。利用这个原则,能够帮我们实现代码的“高内聚、松耦合” “

  • 主要内容:1.Kiss原则,2.Kiss原则意义,3.Kiss原则落地1.Kiss原则 Keep It Simple and Stupid Keep It Short and Simple Keep It Simple and Straightforward. 2.Kiss原则意义 KISS 原则算是一个万金油类型的设计原则,可以应用在很多场景中。它不仅经常用来指导软件开发,还经常用来指导更加广泛的系统设计、产品设计等,比如,冰箱、建筑、iPhone 手机的设计等等