java - java中需要多重继承时使用哪种设计模式

标签 java design-patterns

<分区>

我有一个车辆类,以及用于检查安全性的良好实现的船舶和飞机,每个类都实现自己的安全检查。世界是美好的。

interface Vehicle {
    public void safetyCheck();
}


class Ship implements Vehicle {
    @Override
    public void safetyCheck() {
        //check if number of lifeboats >= number of passengers
    }
}

class Plane implements Vehicle {
    @Override
    public void safetyCheck() {
        //check if oxygen mask is in place.
    }
}

但很快就需要一种称为水上飞机的混合体,它可以对ShipPlane 进行重复安全检查

class SeaPlane implements Vehicle {
    @Override
    public void safetyCheck() {
        //check if oxygen mask is in place.
        // && 
       //check if number of lifeboats >= number of passengers
    }
}

哪些设计模式有助于在此类特定场景中减少代码冗余并使实现更简洁?

最佳答案

无需为这种情况建立新的接口(interface)或类,您可以使用 Composition over Inheritance原则。

因此您的SeaPlane 可能如下所示:

class SeaPlane implements Vehicle {
    private Vehicle plane,
                    ship;
    @Override
    public void safetyCheck() {
       plane.safetyCheck();
       ship.safetyCheck()
    }
}

构造函数采用 PlaneShip 对象。

关于java - java中需要多重继承时使用哪种设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22333360/

相关文章:

design-patterns - Web 框架有哪些好的模式?

design-patterns - 分别与工厂方法模式和抽象工厂模式相比,简单工厂的缺点是什么?

java - 在java中执行外部命令行实用程序并将其打包到可运行的jar中

Java 引用传递不起作用?

java - 未定义 JSF-Html Body 标记

java - 获得正确的编码

c# - 从类库中抛出单个自定义异常

language-agnostic - 表模块示例

c# - MVVM模式,ViewModel集合

java - 如何在 netbeans 中查看 mysql 查询的结果