Tehnici de proiectare software - Tipografia
Tehnici de proiectare software - Tipografia
Tehnici de proiectare software - Tipografia
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