Spesso mi trovo in questa situazione in cui ho una classe base che fa molta grafica. Ci sono, ad esempio, tre stringhe posizionate in alto, in mezzo, in basso di un elemento. Come una bilancia o qualcosa del genere Ora per ogni tipo di scala faccio una nuova classe che eredita la classe base e semplice imposta le tre stringhe e tutto va bene. Ma spesso c'è un solo caso, in cui ho bisogno di quattro stringhe.
Certo, potrei semplicemente sovrascrivere il metodo e ricalcolare per quattro, MA se i calcoli sono basati su molti offset ecc. Dovrei sempre dare un'occhiata a come la classe base lo fa in primo luogo e poi copiare -infatti l'intero calcolo e fallo per un'altra stringa. Ciò significa che ogni volta che il calcolo della base cambia, dovrei copiare e incollare di nuovo ecc.
D'altra parte, potrei scrivere la classe base in modo super flessibile che ogni piccolo passaggio può essere sovrascritto e le sottoclassi possono fare tutto ciò che vogliono con facilità. Ma questo richiede molto più lavoro sulla classe base per UN caso speciale su 20.
Quindi o è più carico di lavoro all'inizio o il rischio di perdere una copia incolla.
Spesso non so nemmeno cosa verrà e non puoi scrivere una base di riferimento che sia completamente flessibile e che nessuno abbia il tempo di farlo. Quindi l'override e il copia-incolla sembrano il modo migliore per farlo, ma sembra ancora troppo rischioso.
Come dovrei avvicinarmi a questo? Sto cercando soluzioni pratiche, non un approccio scolastico che richiede troppo tempo in una vera vita lavorativa.
(Io lavoro principalmente con Java)
Modifica: Per ottenere un po 'di distanza dal mio esempio, che è davvero solo un esempio. Diciamo che ho una classe e 20 sottoclassi e funzionano. Ora arriva una nuova sottoclasse che ha bisogno di UNA cosa completamente diversa e non può usare il metodo delle classi base. Se eseguo l'override devo copiare incolla l'intero metodo e adattarlo. Se cambio qualcosa sul metodo, allora dovrò cambiare 20 classi che stanno già funzionando bene.
"Fallo dall'inizio" funziona con un metodo, ma cosa succede se 10 o più metodi potrebbero essere la causa di problemi. Non riesco a scrivere la classe base in modo tale che per ogni metodo possa essere usata una classe metodo variabile. Potrei, ma è quello che intendevo sopra con "carico di lavoro estremo all'inizio"