Fabbrica di fabbriche? [chiuso]

2

Ho classi factory concrete che implementano l'interfaccia MyFactory . Voglio ottenere oggetti di fabbrica concreti basati su parametri. Come si fa?

Un modo è creare fabbrica di fabbriche [FoF], e FoF dovrebbe essere parametrizzato in fabbrica.

C'è un modo più elegante per farlo?

Questo è un esercizio puramente intellettuale, non ho alcun problema nel mio progetto.

    
posta q126y 27.11.2015 - 13:50
fonte

3 risposte

5

In effetti, quando si utilizza il modello Fabbrica astratta , da qualche parte nel programma deve essere presa una decisione su quale fabbrica di calcestruzzo le lezioni verranno istanziate. E il metodo che lo fa in genere è un metodo di fabbrica . Sarà meno confuso se distinguerai chiaramente tra questi due termini.

    
risposta data 27.11.2015 - 16:43
fonte
3

Sì, avresti Factory of Factories. Il punto chiave è che questa classe o metodo dovrebbe essere nella libreria / applicazione più in alto. Solo la minima parte possibile dell'applicazione dovrebbe essere a conoscenza di questo FoF. Potrebbe benissimo essere un semplice metodo in launcher dell'applicazione che viene eseguito prima dell'esecuzione del ciclo principale dell'applicazione.

Se ti venisse la tentazione di creare un'interfaccia per questo FoF, ciò potrebbe indicare che lo schema di creazione potrebbe utilizzare la riprogettazione.

Modifica: Sembra che abbiamo bisogno di chiarire cosa intendo per fabbrica (in realtà fabbrica astratta, ma non considero "una fabbrica" come modello.) Il modello di fabbrica astratto è la soluzione a una situazione, in cui è necessario un pezzo di codice crea un'istanza, ma il pezzo di codice in sé non dispone di informazioni sufficienti per decidere quale istanza creare. Questo è il motivo per cui il client espone un'astrazione e qualcuno che ha informazioni per creare quell'istanza realizza quell'astrazione.

Se vuoi parlare di design, DEVI SEMPRE dirci come verrà utilizzato e chi ha quali informazioni.

    
risposta data 27.11.2015 - 14:42
fonte
2

Un singolo BikeFactory dovrebbe essere in grado di produrre biciclette diverse, quindi un utente sceglie una Harley rossa con un orsacchiotto sul manubrio. Hai semplicemente bisogno di due argomenti per BikeFactory :: createBike: il tipo di bicicletta e le opzioni (vernice rossa e decorazione del manubrio).

Il tuo BikeFactory crea quindi una Harley e inietta le opzioni in quell'istanza di Harley.

Non hai bisogno di una specifica fabbrica Harley - Le Harley sono costruite come Suzukis / Hondas / Sanchezes.

    
risposta data 27.11.2015 - 14:32
fonte

Leggi altre domande sui tag