Numirea modelului Abstract Factory
Utilizare model Abstract Factory (Abstract Factory) în cazul în care:
Iată câteva exemple de grupuri de obiecte înrudite.
Să unele aplicații cu suport pentru interfața grafică cu utilizatorul este proiectat pentru a fi utilizat pe platforme diferite, cu aspectul interfeței trebuie să se potrivească cu stilul acceptat pentru o anumită platformă. De exemplu, în cazul în care aplicația este instalată pe platforma Windows, butoanele, meniurile, barele de defilare sunt afișate în stilul adoptat pentru Windows. Un grup de obiecte legate între ele, în acest caz, sunt elementele unei interfețe grafice utilizator pentru o anumită platformă.
Un ultim exemplu. În modelele generative de a vorbi despre strategia de joc, care descrie confruntarea militară dintre armatele Romei și Cartagina. Evident, aspectul și caracteristicile ordinii de luptă pentru diferitele tipuri de trupe (infanterie, arcasi, cavalerie) sunt fiecare în armata lor. În acest caz, o familie de obiecte înrudite sunt tot felul de războinici pentru aceasta sau cea a părții opuse, în acest caz, ar trebui să fie excluse, de exemplu, o astfel de situație, atunci când cavaleria luptele romane de pe partea Cartaginei.
Descriere model Abstract Factory
Fabrica de model Rezumat este implementat pe baza metodelor de fabricație (a se vedea. Pattern Factory Method).
Orice familie sau grup de obiecte interdependente se caracterizează prin mai multe tipuri comune de produse fabricate, sunt ele însele produse de acest tip vor fi diferite pentru familii diferite. De exemplu, în cazul unui joc de strategie produs de tipuri comune de produse vor fi de infanterie, arcasi si cavalerie, cu fiecare dintre aceste genuri forțe ale armatei romane pot fi în mod substanțial diferite în caracteristici de aspect și de luptă ale forțelor armate sootvetstvuyushaya armata Cartagina.
Pentru ca sistemul să rămână independent de specificul unei anumite familii de produse este necesar să se utilizeze interfețe comune pentru toate tipurile majore de produse. În cazul unui joc strategic, ceea ce înseamnă că este necesar să se utilizeze trei clasa de baza abstracta pentru fiecare tip de soldați: infanterie, arcasi si cavalerie. Derivat din aceste clase vor pune în aplicare specificul tipului respectiv de soldați dintr-o anumită armată.
model diagrama UML clasă Abstract Factory
Punerea în aplicare a modelului Abstract Factory
Aici este punerea în aplicare a modelului Abstract Factory la strategia militară „punice războaie“. Se presupune că numărul și tipurile produse în joc timpurie a unităților de luptă sunt identice pentru ambele armate. O descriere detaliată a jocului pot fi găsite în modelele secțiunea Generarea.
Concluzia programului va fi după cum urmează:
Rezultatele aplicării modelului Abstract Factory
Avantajele modelului Abstract Factory
- Se ascunde procesul a instalațiilor de producție, și face ca sistemul independent de tipurile de obiecte create specifice diferitelor familii sau grupuri de utilizatori (opera aceste obiecte prin intermediul interfețelor abstracte corespunzătoare).
- Acesta vă permite să personalizați rapid sistemul familiei dorit de obiecte create. În cazul aplicațiilor grafice multi-platforma pentru a trece la o nouă platformă, care este de a înlocui elementele grafice (butoane, meniuri, bare de defilare) unul altul pentru a crea subclasa stilul dorit al fabricii abstracte suficient. Condiția nu se poate utiliza simultan elementele de stiluri diferite pentru unele platforme se va face în mod automat.
Dezavantajele modelului Abstract Factory
- Este dificil de a adăuga noi tipuri de produse fabricate sau înlocuiți existente, deoarece interfața fabricii abstracte din clasa de bază fixă. De exemplu, în cazul în care jocul nostru strategic va trebui să introducă un nou tip de unități militare - arme de asediu, va fi necesar să se adauge o nouă metodă de fabrică, declarând interfața sa într-o clasă de bază polimorfă AbstractFactory și implementat în toate subclase. Pentru a elimina această limitare după cum urmează. Toate obiectele create trebuie să moștenească dintr-o clasă comună de bază abstractă, iar singura metodă o fabrică ca o opțiune, trebuie să transferați tipul de proprietate de ID-ul pe care doriți să creați. Cu toate acestea, în acest caz, trebuie să fie luate în considerare în continuare. Metoda Factory creează un obiect al diviziunii solicitate, dar revine la interfața comună a clasei abstracte sub forma de link-uri sau indicii, astfel încât obiect este dificil de a efectua o operațiune specifică subclasa.