29.04.2013 Views

Tehnici de proiectare software - Tipografia

Tehnici de proiectare software - Tipografia

Tehnici de proiectare software - Tipografia

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

- Creator - interfaŃa ce <strong>de</strong>fineşte metoda iactorvMethod<br />

- ConcreteCreator - clasa ce extin<strong>de</strong> clasa Creator şi conŃine implementarea<br />

meto<strong>de</strong>i factoryMethod. Ea poate returna orice obiect care implementează interfaŃa<br />

Product<br />

Beneficii şi inconveniente<br />

Un beneficiu major este acela că managerul personal <strong>de</strong> informaŃii poate fi<br />

foarte generic. Trebuie doar să ştie cum să ceară un editor pentru un articol.<br />

InformaŃia privind modul <strong>de</strong> editare al unui articol specific este conŃinută în editor.<br />

Editorul poate <strong>de</strong> asemenea crea interfaŃa grafică cu utilizatorul pentru editare. Acest<br />

lucru face managerul <strong>de</strong> informaŃii mult mai uşor <strong>de</strong> utilizat, putându-se introduce noi<br />

tipuri <strong>de</strong> informaŃii fără a fi nevoie <strong>de</strong> modificarea programului central.<br />

Inconvenientul acestui şablon este acela că pentru a adăuga un nou tip <strong>de</strong><br />

produs, trebuie adăugată şi implementată o nouă clasă şi trebuie ori modificată o clasă<br />

ConcreteCreator <strong>de</strong>ja existentă ori creată o nouă clasă care să implementeze interfaŃa<br />

Product.<br />

• Variante ale şablonului<br />

Există mai multe variante ale şablonului Factory Method:<br />

- clasa Creator poate avea o implementare standard pentru meto<strong>de</strong>le <strong>de</strong> tip<br />

factoryMethod. In acest fel, clasa Creator nu trebuie să fie o clasă abstractă sau o<br />

interfaŃă. Beneficiul este acela că nu trebuie implementată o subclasa a clasei Creator<br />

- interfaŃa Product poate fi implementată ca o clasă abstractă, astfel putând fi<br />

adăugate implementări pentru alte meto<strong>de</strong><br />

- metoda factoryMethod poate avea un parametru. Poate apoi crea mai multe<br />

tipuri <strong>de</strong> obiecte Product pe baza parametrului dat. Acest lucru duce la scă<strong>de</strong>rea<br />

meto<strong>de</strong>lor <strong>de</strong> tip factoryMethod necesare.<br />

• Şabloane asociate<br />

Printre şabloanele asociate şablonului Factory Method se află:<br />

- Prototype - evită implementarea unei subclase a clasei Creator<br />

- Template Method - meto<strong>de</strong>le <strong>de</strong> tip Template apelează <strong>de</strong> regulă meto<strong>de</strong> <strong>de</strong><br />

tip factoryMethod<br />

- Data Access Object - foloseşte şablonul Factory Method pentru a putea crea<br />

instanŃe specifice ale obiectelor <strong>de</strong> tip Data Access Objects fără a necesita cunoştinŃe<br />

<strong>de</strong>spre baza <strong>de</strong> date specifică<br />

■ Exemplu<br />

Şablonul Factory Method poate fi folosit pentru realizarea unei picturi, după<br />

cum urmează:<br />

13

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!