model Metoda Factory

Metoda Factory - este un model pentru a crea obiecte (model creațional). Acest model de design oferă o interfață pentru a crea instanțe ale unei clase. La momentul moștenitorilor poate decide care clasa a instantia.

Cu alte cuvinte, fabrica delegat clasa succesori Crearea unui obiect părinte. Acest lucru vă permite să utilizați codul de program nu este clase specifice și manipula obiecte abstracte la un nivel superior.

Fabrica de model de design este foarte frecvente. Luați în considerare un mic exemplu în Java.

Introducere: la tot felul de cerințe de produse software este în continuă creștere. Rapoartele privind punerea în aplicare a operațiunii de aplicare ar trebui să fie format în diferite forme: XML, HTML, text etc. Acesta este exact cazul în care este convenabil de a utiliza modelul de fabrică.

Soluție: Clasa va fi abstractizare AbstractWriter pentru înregistrarea într-un anumit context (dacă XML document sau un fișier text).

Această clasă poate fi orice număr de moștenitori. Luați în considerare ConcreteFileWriter și ConcreteXmlWriter subclase pentru a scrie într-un fișier text și un document DOM, după caz:

Pentru a crea obiectul dorit, putem scrie următoarele fabrica:

În textul programului atunci când creați un raport de care aveți nevoie pentru a trece într-o funcție getWriter obiect fișier sau un document DOM. Ca rezultat al metodei, obținem nivelul necesar obiectului dorit de abstractizare.

Utilizați modelul de fabrică în următoarele cazuri:

  • clasă nu are informații cu privire la ce tip de obiect este de a crea;
  • clasa prevede responsabilitatea pentru crearea moștenitorii obiectelor;
  • trebuie să vă creați un obiect, în funcție de datele de intrare.

Intr-un articol mai târziu, ne vom uita la modelul de proiectare Abstract Factory.

În ceea ce am înțeles în exemplul (de exemplu, într-o serie de modele de mulțumiri speciale) ilustrat fabrica parametrirozovannaya, t. Pentru a. În parametrul metodei din fabrică este trecut pe baza cărora este creată de o anumită AbstractWriter subclasă. Între timp, fabrica clasic, așa cum am înțeles, se comportă puțin diferit: „clasa este proiectat astfel încât obiectele pe care le creează, specificați subclase“ ( „Design Patterns“ E. Gamma). Adică, ar trebui să existe mai mulți moștenitori FactoryMethod pentru fiecare AbstractWriter moștenitor, iar alegerea este clientul, ce fel de implementare a FactoryMethod alege. Am înțeles bine?

De fapt, în exemplul prezentat nu este metoda Factory, și așa-numita Factory simplă (nu este chiar un model de design, ci pur și simplu o tehnica utilizate pe scara larga). Danik corect scrise, acea clasă trebuie să fie moștenitorii FactoryMethod care suprascriu de fapt metoda din fabrică. La prima vedere poate părea că nu există nici o diferență, dar diferența este enormă. Citiți „Mostrele primul cap de proiectare“ sau „Modele de proiectare pentru Dummies“ și veți înțelege totul.

Te înșeli. Este încă metoda de fabrică. Citim în Erich Gamma: „Metode de parametrizate din fabrică. Aceasta este o altă versiune a modelului, care permite metoda din fabrică pentru a crea diferite tipuri de produse. Metoda Factory are un parametru care identifică tipul de obiect care urmează să fie creat.

Toate obiectele sunt obținute prin utilizarea metodei din fabrică, împărtășesc o interfață comună de produse. În exemplul documentelor de clasă de aplicații pot sprijini diferite tipuri de documente. Tu treci parametrul suplimentar metoda CreateDocument, care determină ce fel de document pe care doriți să creați "

Deci, înainte de a-și exprima opinia lor, ar fi frumos pentru a explora o parte a saltelei

Ceea ce nu este înțeleasă, dar este diferit de strategia de model?

Pot fi prea inteligent pentru. diferența Antonin yorov între fabrică și strategia este că strategia face posibilă determinarea în mod dinamic algoritmul corespunzător (de exemplu, poate fi conectat la interfața subclasa corespunzătoare în timpul rulării) și fabrica cu tot acest algoritm are o metodă care returnează un obiect.

articole similare