I have a vehicle class, and nice implmented Ship and Plane to check for safety, each class implementing its own safetycheck. World was good.
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.
}
}
But soon a hybrid called seaplane was needed which duplicated safety checks of Ship
and Plane
class SeaPlane implements Vehicle {
@Override
public void safetyCheck() {
//check if oxygen mask is in place.
// &&
//check if number of lifeboats >= number of passengers
}
}
Which design patterns help in such particular scenarios to reduce code redundancy and make implementation cleaner ?