Aiuta a capire il modello astratto di fabbrica

6

Sto imparando i 23 modelli di design del GoF.

Penso di aver trovato un modo per capire e semplificare il funzionamento della Fabbrica astratta, ma vorrei sapere se si tratta di un presupposto corretto o se sbaglio.

Quello che voglio sapere è se possiamo vedere il risultato del metodo Abstract Factory come una matrice di possibili prodotti in cui esiste un prodotto per ogni "Concrete Factory" x "AbstractProduct" dove Concrete Factory è una singola implementazione tra i le implementazioni di un AbstractFactory e di un AbstractProduct sono un'interfaccia tra le interfacce per creare prodotti.

È corretto o mi manca qualcosa?

    
posta Chobeat 14.10.2012 - 15:32
fonte

2 risposte

2

In breve, il modello di fabbrica astratto è un modo per incapsulare un gruppo di fabbriche che hanno un tema comune. Utilizza interfacce generiche per consentirgli di creare oggetti concreti che fanno parte del tema comune. Usando questo modello puoi interscambiare le classi concrete senza cambiare il codice che le usa.

I Generics in C # e i costrutti equivalenti in C / C ++ o Java sono molto utili quando si creano pattern di fabbrica. Ecco un articolo completo su come creare un Fabbrica astratta generica con C # .

    
risposta data 14.10.2012 - 17:59
fonte
0

Immagina che nella tua app sia necessario aprire un browser e questo dipende dal sistema operativo. Puoi scrivere:

if (operatingsystem == "win32") runExplorer();
else if (operatingsystem == "linux") runKonqueror();

...

o, con AbstractFactory:

interface OperatingSystemAF {
   public void runBrowser();
}

class WindowsCC implements OperatingSystemAF {
  public void runBrowser() {
      //TODO run Explorer
  }
}

class LinuxCC implements OperatingSystemAF {
   public void runBrowser() {
     //TODO run Konqueror
   }
}

e l'applicazione principale richiama runBrowser da OperatingSystemAF .

    
risposta data 14.10.2012 - 17:48
fonte

Leggi altre domande sui tag