Domanda sul refactoring e sulla progettazione del codice

0

Supponiamo, ho una classe con un campo finale statico costante. Allora voglio che in certe situazioni quel campo sia diverso. Può ancora essere definitivo, perché dovrebbe essere inizializzato nel costruttore. La mia domanda è, quale strategia dovrei usare:

  1. aggiungi questo valore di campo nel costruttore
  2. crea 2 sottoclassi, sostituisci l'utilizzo del campo originale con un metodo protetto e sovrascrivilo nelle sottoclassi
  3. O creare qualche classe composita che terrà l'istanza della mia classe all'interno e in qualche modo cambierà quel valore?

Quale approccio dovrei usare e perché?

    
posta dhblah 15.11.2012 - 16:11
fonte

2 risposte

2

Penso che sia necessario chiedere perché il campo è stato impostato per la finale in primo luogo. L'impressione è che non sia mai stato pensato di essere cambiato.

Il fatto che sia necessario modificare il valore (o avere più opzioni per il valore) indica che le ipotesi originali che guidano il design non sono più valide.

Suggerirei di riflettere su quale funzione stia effettivamente servendo quel campo e su quale sia il modo migliore per fornire quella funzionalità ad altri oggetti. Ciò potrebbe significare un'implementazione di pattern factory di piccole dimensioni o due proprietà separate che possono essere recuperate come richiesto dai chiamanti. La tua domanda originale non fornisce un contesto sufficiente per suggerire un'alternativa più accurata.

Quindi penso che le tue tre opzioni stiano risolvendo il problema sbagliato. Stai provando a cambiare le trombe di ferro in un elemento che è stato esplicitamente progettato per cambiare non accettare . Trova un modo migliore di servire quella funzionalità in base alla tua applicazione.

    
risposta data 16.11.2012 - 20:02
fonte
0

L'opzione 3 ti consentirà di rafforzare l'atomicità della creazione di oggetti. Sarai in grado di impostare il valore nell'altra classe poiché ha un'aggregazione per la tua classe con il campo finale statico.

Fare questo è un modo semplice ma potente per aumentare sia la correttezza e la robustezza di un dato oggetto: dato che non può non essere inizializzato correttamente, i metodi successivi sono liberi di occuparsi della loro elaborazione e usano tutti i campi di cui hanno bisogno eseguire tale elaborazione, senza preoccuparsi della corretta sequenza di inizializzazione dell'oggetto.

Risorse - Riferimento

    
risposta data 15.11.2012 - 17:12
fonte

Leggi altre domande sui tag