Va bene avere molte classi astratte nella tua applicazione?

9

Inizialmente volevamo implementare un modello di strategia con diverse implementazioni dei metodi in un'interfaccia di comunicazione. Questi verranno rilevati in fase di esecuzione in base agli input dell'utente.

Come risulta, abbiamo Classi astratte che implementano 3 - 5 metodi comuni e solo un metodo disponibile per un'implementazione variabile , ovvero la Strategia.

Aggiornamento: con molte classi astratte intendo che ci sono 6 diverse funzionalità di alto livello, cioè 6 pacchetti, e ognuno ha la sua interfaccia + AbstractImpl + (serie di Actual Impl).

Questo è un cattivo design in qualche modo?

Qualsiasi punto di vista negativo in termini di estensibilità successiva: mi sto preparando per una revisione del codice / design con gli anziani.

    
posta JoseK 06.09.2011 - 12:04
fonte

4 risposte

8

No, non è affatto un cattivo design. È un modello di metodo del modello .

Ha lo scopo di incapsulare il comportamento variabile di un passo dell'algoritmo, che è probabilmente il caso nel tuo scenario. La strategia e i modelli di metodo dei modelli costituiscono una combinazione strong in molti casi. Probabilmente hai delle strategie astratte come una cornice e usi il modello di metodo del modello per le strategie concrete. È abbastanza pulito.

È estendibile e inoltre non è necessario ripetere il codice. Quando hai bisogno di qualcosa di completamente diverso, usa l'interfaccia della strategia per creare una nuova strategia astratta o concreta.

    
risposta data 06.09.2011 - 12:09
fonte
4

No, può essere abbastanza OK (a seconda dei dettagli - è difficile dire di più con questa piccola conoscenza del tuo caso concreto). È perfettamente corretto unificare le implementazioni dei metodi comuni in una classe base astratta.

A seconda di come viene utilizzato il singolo metodo astratto nelle tue classi, questo modello potrebbe essere un metodo Template invece della strategia . Vale a dire, se è chiamato da qualche altro metodo finale nella classe base, piuttosto che direttamente dal mondo esterno.

    
risposta data 06.09.2011 - 12:09
fonte
1

Modelli modello I pattern rendono la sottoclasse l'implementazione del codice speciale con il metodo astratto e la sottoclasse eredita il metodo comune dalla superclasse. Quindi non penso che questo abbia molte classi astratte, è solo una delle classi astratte, tutte le sottoclassi sono classi di istanze.

    
risposta data 24.11.2011 - 14:17
fonte
0

Se le classi astratte stanno implorando gli stessi metodi, con lo stesso contenuto, allora perché hanno più classi astratte?

Se stanno implorando i metodi in modo diverso, allora non vedo alcun problema.

Per migliorare l'estensibilità usa le interfacce, quindi è meno un problema se poi scarti le classi astratte

    
risposta data 06.09.2011 - 12:10
fonte

Leggi altre domande sui tag