Il modello Abstract Factory può essere considerato un caso di polimorfismo?

1

Stavo cercando un pattern / soluzione che mi consenta di chiamare un metodo come eccezione di runtime in un gruppo di metodi diversi senza usare Reflection. Recentemente mi sono reso conto del Pattern di fabbrica astratto .

Per me, assomiglia molto al polimorfismo, e ho pensato che potesse essere un caso di polimorfismo ma senza la super classe GUIFactory , come puoi vedere nell'esempio del link sopra. Sono corretto in questa ipotesi?

    
posta rogcg 29.11.2011 - 02:01
fonte

1 risposta

5

Penso che dipenda da come viene usato.

Essenzialmente il pattern Factory è un riferimento a un insieme di oggetti. Normalmente combinato con qualcos'altro, possibilmente come il modello di strategia (che è più probabile essere definito come un tipo di polimorfismo) per fornire un riferimento a un oggetto su cui agire.

L'Abstract Factory Pattern di per sé è pensato per essere polimorfico in quanto è definito come un tipo di classe astratta. Tuttavia, l'implementazione concreta della fabbrica è il WidgetFactory nel tuo tipo ed è solo polimorfico in riferimento all'utilizzo di una fabbrica e all'implementazione di una fabbrica.

In termini di ciò che stai cercando, hai sicuramente bisogno di una fabbrica di cemento, e presumibilmente le azioni che esegui dipendono dall'eccezione che viene catturata. A tal fine dovresti usare la tua implementazione di fabbrica in modo non polimorfo semplicemente passandogli l'eccezione catturata, e avere il modello factory restituire un metodo per invocare una strategia o anche un pattern chain-of-command per gestire il modo in cui dovresti mi piace gestire l'eccezione.

Pertanto, il tuo factory non sarebbe necessariamente polimorfico, ei tuoi gestori di eccezioni sarebbero polimorfici.

    
risposta data 29.11.2011 - 02:17
fonte

Leggi altre domande sui tag