Ho un problema con l'utilizzo della giusta catena di ereditarietà senza perdere buone parti del principio di DRY.Due diverse catene di ereditarietà senza rompere il principio di DRY
Data la seguente struttura:
- astratto classe A è la mia base per tutte le classi
- classe astratta B: A è la mia base per tutte le classi che possono avere funzioni speciali (reso disponibile attraverso B)
Ora, ho bisogno di avere due nuove classi che condividono le stesse caratteristiche. Ma uno è di tipo A mentre l'altro è di tipo B. (Questo non può essere modificato!) Entrambe le classi dovrebbero avere un metodo SetSize()
.
Quindi alla fine ci sarebbe la classe C: A e D: B, entrambi con lo stesso metodo SetSize.
Domanda: Come si crea un livello intermedio di classe base in modo che il metodo SetSize()
venga dichiarato/implementato una sola volta (DRY)? Immagino qualcosa sull'utilizzo di interfacce o alcune classi di helper statiche per implementare la logica di SetSize()
?
Esistono modelli o migliori pratiche per ottenere questo comportamento?
Correlati - [Preferisci composizione su ereditarietà] (http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance) –
Il comportamento di 'SetSize' sarà lo stesso per tutte le implementazioni? (sia per le classi di tipo A che B, come hai menzionato 'dry')? – Yogi
@Yogi Il metodo sarà esattamente lo stesso per entrambe le implementazioni. Ecco perché sto cercando un modo per averlo in un unico punto – KingKerosin