Qual è la differenza tra il modello di fabbrica e il modello di fabbrica astratto

Il differenza principale tra modello di fabbrica e modello di fabbrica astratto è che il factory pattern fornisce un metodo per creare oggetti senza specificare la classe esatta usata per crearlo mentre il pattern factory astratto fornisce un metodo per combinare un gruppo di singole fabbriche senza specificare le loro classi concrete.

I modelli di progettazione sono le soluzioni ai problemi generali che gli sviluppatori software devono affrontare nello sviluppo di software. Sono generici e non dipendono dal tipo di sistema o dal linguaggio di programmazione. Inoltre, sono soluzioni comprovate e forniscono le migliori pratiche. Esistono tre tipi di schemi di progettazione come creazionali, strutturali e comportamentali. I modelli creazionali forniscono un metodo per creare oggetti nascondendo la logica creazionale. Inoltre, rendono il programma più flessibile. Modello di fabbrica e modello di fabbrica astratto sono due modelli di design creativo.

Aree chiave coperte

1. Qual è il modello di fabbrica
     - Definizione, Funzionalità
2. Cos'è il pattern di fabbrica astratto
     - Definizione, Funzionalità
3. Qual è la differenza tra il modello di fabbrica e il modello di fabbrica astratto
     - Confronto tra le principali differenze

Parole chiave

Modello astratto di fabbrica, modello di fabbrica

Qual è il modello di fabbrica

Un modello factory fornisce un buon metodo per creare oggetti. Usando questo metodo, il programmatore può creare oggetti senza esporre la logica creazionale. È anche possibile fare riferimento all'oggetto appena creato utilizzando un'interfaccia comune. Fare riferimento al programma seguente.

Figura 1: interfaccia di forma

Figura 2: Classe rettangolare

Figura 3: classe quadrata

Figura 4: classe Circle

Figura 5: Classe ShapeFactory

Figura 6: classe principale

L'interfaccia Shape ha un metodo astratto chiamato draw. Rectangle, Square e Circle sono classi. Implementano l'interfaccia Shape. Pertanto, queste classi forniscono un'implementazione per l'estrazione del metodo. Il metodo di disegno in ogni classe ha la propria implementazione. La classe ShapeFacotry ha un metodo chiamato getShape. Ottiene una stringa. Questo metodo restituirà un oggetto in base alla stringa ricevuta.

Nel metodo principale, c'è un oggetto chiamato forma. È di tipo ShapeFactory. Il metodo getShape è chiamato usando quell'oggetto. La stringa "Rectangle" viene passata ad essa. L'oggetto restituito memorizza in shape1, che è di tipo Shape. Allo stesso modo, le stringhe "SQUARE" e "CIRCLE" vengono passate a getShape. Gli oggetti di ritorno sono memorizzati in shape2 e shape3. Ogni oggetto chiama il metodo draw e il metodo draw corrispondente viene eseguito in base alla stringa passata.

Il programma principale usa la classe ShapeFactory per ottenere un oggetto Shape. Passa la stringa richiesta a ShapeFactory per ottenere il tipo di oggetto di cui ha bisogno.

Cos'è il pattern di fabbrica astratto

Abstract Factory Pattern utilizza una super fabbrica e crea altre fabbriche. È anche conosciuto come a fabbrica di fabbriche. In questo modello, un'interfaccia crea una fabbrica di oggetti correlati senza specificare esplicitamente le loro classi. In altre parole, dopo aver creato la super fabbrica, può creare altre fabbriche. Fare riferimento al programma seguente.

Figura 7: interfaccia a colori

Figura 8: classe gialla

Figura 9: classe arancione

Figura 10: classe viola

Figura 11: classe AbstractFactory

Figura 12: classe ShapeFactory

Figura 13: classe ColorFactory

Figura 14: Classe FactoryProducer

Figura 15: programma principale

Interface Shape e le classi Rectangle, Square, Circle sono gli stessi della sezione precedente. Il colore è un'interfaccia; ha un metodo astratto chiamato riempimento. Le classi Yellow, Orange e Purple implementano quell'interfaccia. Pertanto, queste classi forniscono l'implementazione per il metodo di riempimento. La classe AbstrcatFactory ha due metodi come getShape e getColor. La classe ShapeFactory estende AbstractFacotry. Allo stesso modo, la classe ColorFactory estende AbstractFactory. Queste classi hanno le implementazioni per i metodi getShape e getColor.

La classe FactoryProducer ha un metodo chiamato getFactory che restituisce un oggetto di tipo AbstractFactory. Restituisce un oggetto ShapeFactory o un oggetto ColorFactory o null in base alla stringa che ottiene. Infine, il metodo principale utilizza FactoryProducer per ottenere AbstractFactory per ottenere fabbriche di classi concrete.

Inoltre, il metodo principale utilizza FactoryProducer per ottenere un oggetto AbstractFactory. Trasmette informazioni come "RECTANGLE", "SQUARE", "CIRCLE" a AbstractFactory per ottenere il tipo di oggetto di cui ha bisogno. Inoltre, passa anche informazioni come "GIALLO", "ORANGLE", "PURPLE" per ottenere il tipo di oggetto di cui ha bisogno. 

Differenza tra il modello di fabbrica e il modello astratto di fabbrica

Definizione

Il modello di fabbrica è uno schema creativo che utilizza un metodo per affrontare il problema della creazione di oggetti senza dover specificare la classe esatta dell'oggetto che verrà creato. Il modello di fabbrica astratto, d'altra parte, è un modello creativo che fornisce un modo per incapsulare un gruppo di singole fabbriche che hanno un tema comune senza specificare le loro classi concrete. Pertanto, queste definizioni spiegano la differenza principale tra modello di fabbrica e modello di fabbrica astratto.

Nascondere la costruzione

Un'altra differenza tra modello di fabbrica e modello di fabbrica astratto è che il modello di fabbrica nasconde la costruzione di un singolo oggetto mentre il modello di fabbrica astratto nasconde la costruzione di una famiglia di oggetti correlati.

Conclusione

I pattern Factory e Abstract Factory sono due modelli di design creativi. Il modello di fabbrica fornisce un metodo per creare oggetti senza specificare la classe esatta utilizzata per crearlo. Al contrario, il modello di fabbrica astratto fornisce un metodo per combinare un gruppo di singole fabbriche senza specificare le loro classi concrete. Pertanto, questa è la differenza principale tra modello di fabbrica e modello di fabbrica astratto.

Riferimento:

1. "Modello di progettazione metodo di fabbrica." Javatpoint, disponibile qui.
2. "Abstract Factory Pattern." Javatpoint, disponibile qui.