GeeksforGeeks (Română)

Metoda din fabrică este un model de creație, adică legat de crearea obiectelor. În modelul Factory, creăm obiect fără a expune logica de creare clientului, iar clientul folosește aceeași interfață comună pentru a crea un nou tip de obiect.
Ideea este să utilizăm o funcție statică membru (metoda static factory) care creează & returnează instanțe, ascunzând de utilizator detaliile modulelor de clasă.

Un model din fabrică este unul dintre principiile de proiectare de bază pentru a crea un obiect, permițând clienților să creeze obiecte dintr-o bibliotecă (explicată mai jos) într-un mod care să nu aibă o cuplare strânsă cu ierarhia de clase a bibliotecii.

Ce se înțelege atunci când vorbim despre bibliotecă și clienți?
O bibliotecă este ceva oferit de o terță parte care expune unele API-uri publice, iar clienții apelează către aceste API-uri publice pentru a-și finaliza sarcina. Un exemplu foarte simplu pot fi diferite tipuri de vizualizări furnizate de sistemul de operare Android.

De ce modelul din fabrică?
Să-l înțelegem cu un exemplu:



Ieșire:

I am two wheeler

Care sunt problemele cu designul de mai sus?
După cum trebuie să fi observat în exemplul de mai sus, Clientul creează obiecte fie pentru TwoWheeler sau FourWheeler pe baza unor date introduse în timpul construcției obiectului său.
Spuneți că biblioteca introduce o nouă clasă ThreeWheeler pentru a încorpora și vehicule cu trei roți. Ce s-ar întâmpla? Clientul va sfârși prin înlănțuirea unei alte persoane, dacă se află în scara condiționată pentru a crea obiecte ale ThreeWheeler. Care, la rândul său, va trebui să fie recompilat Clientul. Deci, de fiecare dată când se face o nouă modificare în partea bibliotecii, Clientul ar trebui să facă unele modificări corespunzătoare la sfârșitul său și să recompileze codul. Sună rău? Aceasta este o practică foarte proastă a designului.

Cum să evitați problema?
Răspunsul este să creați o metodă statică (sau din fabrică). Să vedem codul de mai jos.



Ieșire:

I am three wheeler

În exemplul de mai sus, am decuplat total selecția tipului pentru crearea obiectelor de la Client. Biblioteca este acum responsabilă să decidă ce tip de obiect să creeze pe baza unei intrări. Clientul trebuie doar să apeleze la metoda Create din fabrică a bibliotecii și să treacă tipul dorit fără să-și facă griji cu privire la implementarea reală a creării de obiecte.

Mulțumim lui Rumplestiltskin pentru că a furnizat explicațiile de mai sus.

Alte exemple de metodă din fabrică:

  1. Spuneți, într-un sistem „Desen”, în funcție de introducerea utilizatorului, pot fi desenate diferite imagini precum pătrat, dreptunghi, cerc. Aici putem folosi metoda din fabrică pentru a crea instanțe în funcție de datele introduse de utilizator. Pentru adăugarea unui nou tip de formă, nu este nevoie să modificați codul clientului.
  2. Un alt exemplu: în site-ul de călătorie, putem rezerva bilete de tren, precum și bilete de autobuz și bilet de avion. În acest caz, utilizatorul poate da tipul său de călătorie ca „autobuz”, „tren” sau „zbor”.
    Aici avem o clasă abstractă „AnyTravel” cu o funcție statică de membru „GetObject” care, în funcție de tipul de călătorie al utilizatorului, va creați & returnează obiectul „BusTravel” sau „TrainTravel”. „BusTravel” sau „TrainTravel” au funcții comune, cum ar fi numele pasagerului, Originea, parametrii de destinație.

Datorită faptului că Abhijit Saha oferă primele 2 exemple.

Write a Comment

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *