Care este diferența dintre modelul fabricii și modelul de fabrică abstract?

principala diferență între modelul fabricii și modelul fabrica abstract este faptul că modelul de fabricație oferă o metodă de creare a obiectelor fără a specifica clasa exactă utilizată pentru a le crea, în timp ce modelul abstract al fabricii oferă o metodă de combinare a unui grup de fabrici individuale fără a se specifica clasele lor concrete.

Modelele de design sunt soluțiile la problemele generale cu care se confruntă dezvoltatorii de software atunci când dezvoltă software. Acestea sunt generice și nu depind de tipul de sistem sau limba de programare. Mai mult decât atât, acestea sunt soluții dovedite și oferă cele mai bune practici. Există trei tipuri de modele de design ca fiind creative, structurale și comportamentale. Modelele de creație oferă o metodă de a crea obiecte în timp ce ascundeți logica creării. În plus, ele fac programul mai flexibil. Modelul de fabrică și modelul fabrica abstract sunt două astfel de modele de design creator.

Domenii cheie acoperite

1. Ce este modelul fabricii
     - Definiție, funcționalitate
2. Ce este modelul de fabrică abstractă
     - Definiție, funcționalitate
3. Care este diferența dintre modelul fabricii și modelul de fabrică abstract?
     - Compararea diferențelor cheie

Termeni cheie

Rezumat model de fabrică, model de fabrică

Ce este modelul fabricii

Un model de fabrică oferă o metodă bună de a crea obiecte. Folosind această metodă, programatorul poate crea obiecte fără a expune logica creării. De asemenea, este posibil să trimiteți obiectul nou creat utilizând o interfață comună. Consultați programul de mai jos.

Figura 1: Interfața de formă

Figura 2: Clasa dreptunghiulară

Figura 3: Clasa pătrată

Figura 4: Clasa cercului

Figura 5: Clasa ShapeFactory

Figura 6: Clasa principală

Interfața Shape are o metodă abstractă numită remiză. Rectangul, Pătratul și Cercul sunt clase. Ele implementează interfața Shape. Prin urmare, aceste clase oferă o implementare a tragerii metodei. Metoda de tragere în fiecare clasă are implementarea proprie. Clasa ShapeFacotry are o metodă numită getShape. E un șir. Această metodă va returna un obiect în funcție de șirul primit.

În metoda principală, există un obiect numit formă. Este de tip ShapeFactory. Metoda getShape se numește utilizând obiectul respectiv. Șirul "Rectangle" este trecut la el. Obiectul care se întoarce stochează la shape1, care este de tip Shape. De asemenea, șirurile "SQUARE" și "CIRCLE" sunt transmise la getShape. Obiectele returnate sunt stocate în forma2 și forma3. Fiecare obiect numește metoda de tragere și metoda de tragere corespunzătoare execută în funcție de șirul dat.

Programul principal utilizează clasa ShapeFactory pentru a obține un obiect Shape. Transmite șirul necesar ShapeFactory pentru a obține tipul de obiect de care are nevoie.

Ce este modelul de fabrică abstractă

Abstract Factory Pattern folosește o fabrică superbă și creează alte fabrici. Este, de asemenea, cunoscut ca a fabrică de fabrici. În acest model, o interfață creează o fabrică de obiecte înrudite fără a specifica în mod explicit clasele lor. Cu alte cuvinte, după crearea super-fabricii, poate crea alte fabrici. Consultați programul de mai jos.

Figura 7: Interfață color

Figura 8: Clasa galbenă

Figura 9: Clasa Orange

Figura 10: Clasa purpurie

Figura 11: Clasa AbstractFactory

Figura 12: Clasa ShapeFactory

Figura 13: Clasa ColorFactory

Figura 14: Clasa FactoryProducer

Figura 15: Programul principal

Forma de interfață și clasele dreptunghi, pătrat, cerc sunt aceleași ca și secțiunea anterioară. Culoarea este o interfață; are o metodă abstractă numită umplere. Clasele Galben, Orange și Purple implementează această interfață. Prin urmare, aceste clase oferă implementarea metodei umplerii. Clasa AbstrcatFactory are două metode ca getShape și getColor. Clasa ShapeFactory extinde AbstractFacotry. În mod similar, clasa ColorFactory se extinde în AbstractFactory. Aceste clase au implementările pentru metodele getShape și getColor.

Clasa FactoryProducer are o metodă numită getFactory care returnează un obiect de tip AbstractFactory. Returnează un obiect ShapeFactory sau un obiect ColorFactory sau null în funcție de șirul pe care îl primește. În cele din urmă, principala metodă folosește modelul FactoryProducer pentru a obține din AbstractFactory fabrici de clase de beton.

Mai mult decât atât, principala metodă utilizează FactoryProducer pentru a obține un obiect AbstractFactory. Transmite informații precum "RECTANGLE", "SQUARE", "CIRCLE" către AbstractFactory pentru a obține tipul de obiect de care are nevoie. Mai mult, transmite informații precum "YELLOW", "ORANGLE", "PURPLE" pentru a obține tipul de obiect de care are nevoie. 

Diferența dintre modelul fabricii și modelul de fabrică abstractă

Definiție

Modelul de fabricație este un model creator care utilizează o metodă pentru a rezolva problema creării de obiecte fără a fi nevoie să precizeze clasa exactă a obiectului care va fi creat. Modelul abstract al fabricii, pe de altă parte, este un model creator care oferă o modalitate de încapsulare a unui grup de fabrici individuale care au o temă comună fără a se preciza clasele lor concrete. Astfel, aceste definiții explică principala diferență dintre modelul fabricii și modelul fabrica abstract.

Ascunderea construcției

O altă diferență între modelul fabricii și modelul fabrica abstractă este faptul că modelul fabricii ascunde construcția unui singur obiect, în timp ce modelul abstract al fabricii ascunde construirea unei familii de obiecte similare.

Concluzie

Modelul fabrica și modelul Fabrica Abstract sunt două modele de design creator. Modul de fabricare oferă o metodă de creare a obiectelor fără a specifica clasa exactă utilizată pentru crearea acesteia. În contrast, modelul abstract al fabricii oferă o metodă de combinare a unui grup de fabrici individuale fără a se specifica clasele lor concrete. Prin urmare, aceasta este diferența principală dintre modelul fabricii și modelul fabrica abstract.

Referinţă:

1. "Model de fabricare a metodei fabricate". Javatpoint, disponibil aici.
2. "Abstract Fabrica Pattern". Javatpoint, disponibil aici.