Supponiamo che nella nostra applicazione vogliamo modellare le automobili. Vogliamo anche modellare un deposito di auto in cui immagazziniamo alcune auto registrate. Come dovrebbe essere modellato in scala?
Ecco il mio approccio: in primo luogo, creo una classe di casi PlainCar . Questa è solo una macchina come esiste nel mondo reale, senza nulla di speciale. Successivamente creo un CarRepository . Creo anche un RegisteredCar . Il CarRepository ora può memorizzare PlainCar s e restituirli come RegisteredCar s. Sia PlainCar che RegisteredCar estendono il tratto Car che fornisce tutti i metodi di Comon come drive . RegisteredCar tuttavia è speciale - possiede un'istanza di PlainCar ma aggiunge anche un metodo registrationNumber che restituisce il numero di registrazione; tutti gli altri metodi sono solo delegati all'istanza PlainCar .
Sento tuttavia che ci sono alcuni difetti di questo design. Uno è che devo cambiare RegisteredCar quando aggiungo un metodo / proprietà a PlainCar che penso non dovrebbe essere fatto.
La mia domanda è quindi, può essere modellato meglio e se sì, come? Ci sono altri svantaggi che mi mancano?
Alcuni consigli sulle convenzioni di denominazione sarebbero apprezzati anche perché PlainCar mi sembra abbastanza imbarazzante.