我有一个车辆类,并且有很好的实施船舶和飞机来检查安全性,每个级别都实施了自己的安全检查。世界很好。
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
}
}
哪些设计模式有助于在特定情况下减少代码冗余并使实现更清晰?
答案 0 :(得分:7)
如果没有为此案例建立新的界面或类,您可以使用Composition over Inheritance原则。
所以你的SeaPlane
看起来像这样:
class SeaPlane implements Vehicle {
private Vehicle plane,
ship;
@Override
public void safetyCheck() {
plane.safetyCheck();
ship.safetyCheck()
}
}
构造函数使用Plane
和Ship
对象。
答案 1 :(得分:1)
您可以应用策略模式将组件的某些行为与组件定义分开。然后,您可以在多个类中使用这些行为,以避免冗余。