Abstract Factory - Factory Method

Previzualizare curs:

Extras din curs:

Definitie

Ofera o interfata pentru crearea unor familii de obiecte inrudite sau dependente intre ele, fara a specifica clasa lor concreta. Se mai numeste si kit.

Context

Consideram un generator de interfete grafice utilizator (GUI) care ofera suport pentru standarde multiple privind modul de prezentare a elementelor interfetei. Exemple de asemenea standarde sunt: Motif, Presentation Manager (PM) etc. Diferitele moduri de prezentare ("look & feel") definesc diferite stiluri si modalitati de comportare ale elementelor de control (bare de defilare, ferestre, butoane, meniuri etc). Pentru a asigura portabilitatea intre diferitele standarde, o aplicatie nu trebuie sa fixeze prin cod un anumit tip de elemente de control.

Problema se poate rezolva prin definirea unei clase abstracte, pe care o vom numi WidgetFactory si care declara o interfata pentru crearea fiecarui element de control GUI. Pentru fiecare element de control va exista cate o clasa abstracta care il modeleaza (de exemplu: Window, ScrollBar) precum si mai multe clase concrete, corespunzatoare diverselor standarde de prezentare. Interfata WidgetFactory are cate o operatie care returneaza un nou obiect din fiecare clasa abstracta ce modeleaza un element de control. Clientii vor apela aceste operatii pentru a obtine instante ale elementelor de control, fara sa le "pese" de standardul de prezentare, deci fara a sti la ce clase concrete apartin acele instante.

Pentru fiecare standard de prezentare exista cate o subclasa concreta a lui WidgetFactory care implementeaza operatiile de creare a elementelor de control conform standardului respectiv. In felul acesta se forteaza o anumita dependenta intre clasele concrete care tin de un anumit standard de prezentare, evitandu-se situatii in care unei ferestre Motif de exemplu, i se ataseaza o bara de defilare PM.

Motivatii

Sablonul Abstract Factory se utilizeaza cand:

un sistem trebuie sa fie independent de modul in care produsele sale sunt create, compuse si reprezentate;

un sistem trebuie sa fie configurat la un moment dat cu una din mai multe familii de produse;

trebuie fortata restrictia ca produsele dintr-o anumita familie sa fie utilizate impreuna si nu amestecate cu produsele altei familii;

se doreste crearea unei biblioteci de produse pentru care sunt relevante doar interfetele, nu si implementarile (de exemplu, in cazul generatorului de interfete analizat mai inainte, nu ne intereseaza cum sunt desenate pe ecran diversele elemente de control, ci doar care sunt efectele actionarii lor de catre utilizator si aceste efecte sunt asemenatoare, indiferent de standardul de prezentare).

* AbstractFactory - declara o interfata pentru operatii de creare a produselor abstracte;

* ConcreteFactory - implementeaza operatiile de creare a produselor concrete;

* AbstractProduct - declara o interfata pentru o categorie de produse;

* ConcreteProduct

o defineste un produs care va fi creat de un obiect ConcreteFactory corespunzator;

o implementeaza interfata AbstractProduct;

* Client - utilizeaza doar interfetele AbstractFactory si AbstractProduct.

In mod normal, la executie se creaza cate o singura instanta a claselor ConcreteFactory. Aceste instante vor crea produse avand o implementare particulara. Pentru a obtine produse diferite, clientii trebuie sa utilizeze alte clase ConcreteFactory. Clasa AbstractFactory paseaza sarcina crearii produselor spre subclasele ei ConcreteFactory.

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Abstract Factory - Factory Method.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
7/10 (1 voturi)
Nr fișiere:
1 fisier
Pagini (total):
7 pagini
Imagini extrase:
7 imagini
Nr cuvinte:
2 148 cuvinte
Nr caractere:
13 096 caractere
Marime:
11.39KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Inteligența Artificială
Predat:
la facultate
Materie:
Inteligența Artificială
Profesorului:
ovidiu aritoni
Sus!