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.
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
Abstract fabriekspatroon, 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.
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.
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.
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.
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.
1. "Factory Method Design Pattern." Javatpoint, hier beschikbaar.
2. "Abstract fabriekspatroon." Javatpoint, hier beschikbaar.