Ho i seguenti punti di progettazione di base:
-
Diciamo che ho bisogno di progettare 2 entità, ADecoder e BDecoder, quali sono quasi gli stessi, ad eccezione di alcuni dettagli.
-
Diciamo che entrambi hanno una funzione decodifica () che ovviamente sarebbe separati in quello che fanno, e ci sono anche altre funzioni, con la stessa caratteristica, in quanto eseguono operazioni completamente distinte basate sul tipo di decodificatore.
-
E, naturalmente, ci sono molte funzioni che hanno esattamente la stessa funzionalità, cioè sono agnostiche rispetto al tipo di decodificatore che è.
Ora dovrei progettare solo una classe e operare sulle sue istanze in base alle loro proprietà, decidere cosa fare nelle funzioni simili e lasciare che il codice per le funzioni di base sia lo stesso (switch / if else ecc.)?
O dovrei progettare una classe base astratta e implementare le funzioni comuni al suo interno e lasciare che le funzioni virtuali siano decise dalle rispettive classi figlie?
O c'è qualche altro metodo che sarebbe più adatto a questo tipo di problema?