【发布时间】:2014-04-15 12:22:24
【问题描述】:
我有一个车辆类,并且很好地实施了船舶和飞机来检查安全性,每个类都实施自己的安全检查。世界很好。
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
}
}
哪些设计模式有助于在此类特定场景中减少代码冗余并使实现更简洁?
【问题讨论】:
-
我将为
Plane、Ship和SeaPlane创建一个共同的祖先,使用参数化的safetyCheck,然后Plane调用super,第一个值为param,Ship调用super 具有另一个参数值,SeaPlane调用两次,一个具有两个参数。 (可能使用枚举作为参数) -
同意这是重复的。 SeaPlane 在这个答案 stackoverflow.com/a/21824485/1168342 中基本上是 Pegasus
标签: java design-patterns