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

bcs8qyzn  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(308)

这个问题在这里已经有答案了

java多重继承(17个答案)
6年前关门了。
我有一个载具类,很好地实现了船舶和飞机的安全检查,每个类实现自己的安全检查。世界是美好的。

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.
    }
}

但很快,一种叫做水上飞机的混合动力飞机就被需要了,它可以重复安全检查 Ship 以及 Plane ```
class SeaPlane implements Vehicle {
@Override
public void safetyCheck() {
//check if oxygen mask is in place.
// &&
//check if number of lifeboats >= number of passengers
}
}

在这样的特定场景中,哪些设计模式有助于减少代码冗余并使实现更干净?
2wnc66cl

2wnc66cl1#

您可以应用策略模式来从组件定义中分离组件的某些行为。然后可以在多个类中使用这些行为以避免冗余。

jpfvwuh4

jpfvwuh42#

在这种情况下,不必建立新的接口或类,就可以使用compositionover inheritance原则。
所以你的 SeaPlane 可能是这样的:

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

一个构造器 Plane 和一个 Ship 对象。

相关问题