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.
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
Modello astratto di fabbrica, 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.
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.
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.
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.
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.
1. "Modello di progettazione metodo di fabbrica." Javatpoint, disponibile qui.
2. "Abstract Factory Pattern." Javatpoint, disponibile qui.