We need to have instances of light/heavy cars and instances of arctic light/heavy cars. What is the correct way of inheritance (or composition?) not to duplicate code of ArcticCar code into ArcticLight/HeavyCar?
class Car {
startEnging() {
log("engine started");
}
/* Common car stuff */
}
class LightCar extend Car {
override startEngine() {
log("light car prepare to start");
parent.startEnging();
}
/* Basic light car stuff */
}
class HeavyCar extend Car {
override startEngine() {
turnOnLights();
log("heavy car prepare to start");
parent.startEnging();
}
/* Basic heavy car stuff */
}
class ArcticCar extend ??? {
override startEngine() {
warmUpEngine()
wait10seconds();
log("arctic mode: warming up engine");
parent.startEnging();
}
/* A lot of common stuff for arctic cars. Can overwrite some common Car's functions */
}
class LightArcticCar extend ArcticCar {
override startEngine() {
log("arctic ligh car prepare to start");
parent.startEnging();
}
/* Arctic light car stuff. Can overwrite some specific LightCar's functions */
}
class HeavyArcticCar extend ArcticCar {
override startEngine() {
if(checkForecast())
parent.startEnging();
}
/* Arctic heavy car stuff. Can overwrite some specific HeavyCar's functions */
}
class Main {
buggy = new LightCar();
awdSUV = new HeavyCar();
snowmobile = new ArcticLightCar();
mobileLaboratory = new ArcticHeavyCar();
}
Aucun commentaire:
Enregistrer un commentaire