Ho un programma di manutenzione per auto con una classe Vehicle
astratta che ha diverse classi derivate come Car
MotorCycle
, ecc. Ciascuno di questi veicoli derivati a sua volta è un carburante o un veicolo elettrico. Quindi, invece di avere un FuelCar
, ElectricCar
, FuelMotorCycle
, ElectricMotorCycle
ecc., Sto provando a implementarlo usando la composizione.
Il problema ora è che dovrei controllare tutto il tempo se è un veicolo elettrico o di carburante, e quindi fare as cast
(è come reinterpret_cast da c ++) di conseguenza, o dovrei avvolgere ogni as cast
con% codice%. Aggiunge complessità al codice.
Un'altra opzione stava rimuovendo la classe try catch
vuota e ogni veicolo doveva contenere sia EnergySource
che Fuel
e inizializzarne solo uno nel ctor, ma non sembra giusto avere un'auto a benzina che anche avere una parte elettrica (anche se quella parte è nulla). Anche se questo sembra il più semplice dei tre.
Qualche suggerimento su quale sia l'approccio migliore?
Ecco il diagramma UML di ciò che attualmente ho:
Codice: