Wat is het verschil tussen fabriekspatroon en abstract fabriekspatroon

De grootste verschil tussen fabriekspatroon en abstract fabriekspatroon is dat het fabriekspatroon biedt een methode voor het maken van objecten zonder de exacte klasse te specificeren die wordt gebruikt om het te maken, terwijl het abstracte fabriekspatroon een methode biedt om een ​​groep afzonderlijke fabrieken te combineren zonder hun concrete klassen te specificeren.

Ontwerppatronen zijn de oplossingen voor algemene problemen waarmee softwareontwikkelaars worden geconfronteerd bij het ontwikkelen van software. Ze zijn generiek en zijn niet afhankelijk van het systeemtype of de programmeertaal. Bovendien zijn het bewezen oplossingen en bieden ze best practices. Er zijn drie soorten ontwerppatronen als creatie, structuur en gedrag. Creationele patronen bieden een methode om objecten te maken terwijl ze de creatie logica verbergen. Bovendien maken ze het programma flexibeler. Het fabriekspatroon en het abstracte fabriekspatroon zijn twee van dergelijke ontwerppatronen.

Key Areas Covered

1. Wat is fabriekspatroon
     - Definitie, functionaliteit
2. Wat is Abstract fabriekspatroon
     - Definitie, functionaliteit
3. Wat is het verschil tussen fabriekspatroon en abstract fabriekspatroon
     - Vergelijking van belangrijke verschillen

Sleutelbegrippen

Abstract fabriekspatroon, fabriekspatroon

Wat is fabriekspatroon

Een fabriekspatroon biedt een goede methode om objecten te maken. Met behulp van deze methode kan de programmeur objecten maken zonder de creatie-logica bloot te leggen. Het is ook mogelijk om het nieuw gecreëerde object te verwijzen met behulp van een gemeenschappelijke interface. Raadpleeg het onderstaande programma.

Figuur 1: Vorminterface

Figuur 2: Rechthoekklasse

Figuur 3: Vierkante klasse

Figuur 4: Circle-klasse

Figuur 5: ShapeFactory-klasse

Figuur 6: Hoofdklasse

De Shape-interface heeft een abstracte methode genaamd draw. Rechthoek, Vierkant en Cirkel zijn klassen. Ze implementeren Shape-interface. Daarom bieden deze klassen een implementatie voor de methode-trekking. De tekenmethode in elke klasse heeft zijn eigen implementatie. De ShapeFacotry-klasse heeft een methode genaamd getShape. Het krijgt een string. Deze methode retourneert een object volgens de ontvangen reeks.

In de hoofdmethode is er een object dat vorm wordt genoemd. Het is van het type ShapeFactory. De methode getShape wordt aangeroepen met dat object. De tekenreeks "Rectangle" wordt eraan doorgegeven. Het terugkerende object slaat op naar shape1, die van het type Shape is. Op dezelfde manier worden de reeksen "SQUARE" en "CIRCLE" doorgegeven aan getShape. De retourobjecten worden opgeslagen naar shape2 en shape3. Elk object roept de tekenmethode aan en de bijbehorende tekenmethode wordt uitgevoerd volgens de doorgegeven tekenreeks.

Het hoofdprogramma gebruikt de ShapeFactory-klasse om een ​​Shape-object te krijgen. Het geeft de vereiste reeks door aan ShapeFactory om het type object te krijgen dat het nodig heeft.

Wat is Abstract fabriekspatroon

Abstract Factory Pattern maakt gebruik van een superfabriek en creëert andere fabrieken. Het is ook bekend als a fabriek van fabrieken. In dit patroon maakt een interface een fabriek van gerelateerde objecten zonder expliciet hun klassen op te geven. Met andere woorden, na het maken van de superfabriek kan het andere fabrieken creëren. Raadpleeg het onderstaande programma.

Figuur 7: Kleureninterface

Figuur 8: Gele klasse

Figuur 9: Orange-klasse

Figuur 10: Paarse klasse

Figuur 11: AbstractFactory-klasse

Figuur 12: ShapeFactory-klasse

Figuur 13: ColorFactory-klasse

Figuur 14: FactoryProducer-klasse

Figuur 15: Hoofdprogramma

Interface Shape en de klassen Rectangle, Square, Circle zijn hetzelfde als het vorige gedeelte. De kleur is een interface; het heeft een abstracte methode genaamd vulling. De klassen Geel, Oranje en Paars implementeren die interface. Daarom bieden deze klassen implementatie voor de vulmethode. De klasse AbstrcatFactory heeft twee methoden als getShape en getColor. De klasse ShapeFactory breidt AbstractFacotry uit. Op dezelfde manier breidt de ColorFactory-klasse AbstractFactory uit. Deze klassen hebben de implementaties voor methoden getShape en getColor.

FactoryProducer klasse heeft een methode genaamd getFactory die een object van het type AbstractFactory retourneert. Het retourneert een ShapeFactory-object of een ColorFactory-object of null, afhankelijk van de tekenreeks die wordt opgehaald. Ten slotte gebruikt de FactoryProducer de belangrijkste methode om AbstractFactory fabrieken van concrete klassen te krijgen.

Bovendien gebruikt de hoofdmethode FactoryProducer om een ​​AbstractFactory-object te krijgen. Het geeft informatie zoals "RECHTHOEK", "VIERKANT", "CIRKEL" door aan AbstractFactory om het type object te krijgen dat het nodig heeft. Bovendien geeft het ook informatie door als "GEEL", "ORANGEL", "PAARS" om het type object te krijgen dat het nodig heeft. 

Verschil tussen fabriekspatroon en abstract fabriekspatroon

Definitie

Fabriekspatroon is een creatiepatroon dat een methode gebruikt om het probleem van het maken van objecten aan te pakken zonder de exacte klasse te hoeven specificeren van het object dat zal worden gemaakt. Abstract fabriekspatroon is daarentegen een creatiepatroon dat een manier biedt om een ​​groep individuele fabrieken samen te vatten die een gemeenschappelijk thema hebben zonder hun concrete klassen te specificeren. Deze definities verklaren dus het grootste verschil tussen fabriekspatroon en abstract fabriekspatroon.

De constructie verbergen

Een ander verschil tussen het fabriekspatroon en het abstracte fabriekspatroon is dat het fabriekspatroon de constructie van een enkel object verbergt, terwijl het abstracte fabriekspatroon de constructie van een familie van verwante objecten verbergt.

Conclusie

Het fabriekspatroon en het abstracte fabriekspatroon zijn twee creatiepatronen. Fabriekspatroon biedt een methode voor het maken van objecten zonder de exacte klasse op te geven die is gebruikt om de objecten te maken. Een abstract fabriekspatroon biedt daarentegen een methode om een ​​groep afzonderlijke fabrieken te combineren zonder hun concrete klassen te specificeren. Daarom is dit het belangrijkste verschil tussen fabriekspatroon en abstract fabriekspatroon.

Referentie:

1. "Factory Method Design Pattern." Javatpoint, hier beschikbaar.
2. "Abstract fabriekspatroon." Javatpoint, hier beschikbaar.