Sunteți pe pagina 1din 9

ablonul

Aspecte de

Scop
Adaug responsabiliti unui obiect particular, mai degrab dect clasei sale
Ataeaz dinamic responsabiliti adiionale unui obiect.
O alternativ flexibil la derivare
Cunoscut i ca
Wrapper
Aplicabilitate
Adaug responsabiliti obiectelor transparent i dinamic
i.e. fr s afecteze alte obiecte
Extinderea prin derivare nu e practic
poate duce la prea multe subclase

Structur

Participani &

Component
definete interfaa obiectelor crora li se pot aduga dinamic
responsabiliti
ConcreteComponent
obiectele de baz" la care se pot aduga responsabiliti
Decorator
definete o interfa conform cu interfaa clasei Component
pentru transparen
menine o referin ctre un obiect Component
ConcreteDecorator
adaug responsabiliti componentei

ablonul

Structural

Convertete interfaa unei clase ntr-o alt interfa ateptat de client


Permite unor clase cu interfee diferite s lucreze mpreun (prin
traducerea interfeelor)
Cnd dorim s folosim o clas preexistent, i interfaa acestei nu se potrivete cu interfaa de care
avem nevoie
Vrem s creem o clas reutilizabil ce coopereaz cu clase nerelaionate i neprevzute (i.e. clase
ce pot avea interfee incompatibile)
(doar pentru adaptor obiect) Cnd avem nevoie s folosim mai multe subclase existente, dar nu e
practic s derivm din fiecare pentru a le adapta interfaa. Un obiect adaptor poate adapta interfaa

Structur Adapter

Structur Adapter obiect

Target (Shape)
Definete interfaa
specific domeniului pe
care o folosete Clientul
Client (DrawingEditor)
Colaboreaz cu obiecte
n conformitate cu
interfaa Target
Adaptee (TextView)
Definete o interfa
existent ce necesit
adaptare
Adapter (TextShape)
Adapteaz interfaa lui
Adaptee la interfaa
Target

ablonul Lan de

Scop

Decupleaz transmitorul cererii de


primitor
oferind mai multor obiecte ansa
de a trata cererea
Pune primitorii ntr-un lan i transmite
cererea de-a lungul lanului
pn ce un obiect o trateaz
depinde de context

Structur

Aplicabilitate
mai mult dect un obiect poate trata o
cerere
i nu cunoatem apriori cine o va
trata
mulimea de obiecte ce pot trata cererea
trebuie s fie specificabil dinamic
trimitem o cerere la mai multe obiecte
fr s specificm primitorul
Handler
definete interfaa pentru tratarea
cererilor
poate implementa link-ul ctre succesor
ConcreteHandler
fie trateaz cererea pentru care este
rspunztor ...
dac este posibil
... fie trimite cererea mai departe
succesorului su
Client
iniiaz transmiterea cererii ctre un
obiect ConcreteHandler din lan

ablonul
Scop
Trateaz obiectele individuale i compunerile acestor obiecte uniform
Compune obiectele n structuri arborescente pentru a reprezenta agregri recursive
Aplicabilitate
reprezentarea ierarhiilor de obiecte de tip parte-ntreg
abilitatea de a ignora diferena dintre compuneri de obiecte i obiecte individuale

Structur

Participani &

Component
declar interfaa pentru obiectele din
compunere
implementeaz comportamentul implicit
pentru componente, cnd aceasta este posibil
Composite
definete comportamentul pentru
componentele cu copii
stocheaz componentele-copil
implementeaz operaii specifice
copiilor
Leaf
definete comportamentul pentru obiectele
primitive din compunere

Client
ablonul
manipuleaz obiectele din compunere prin
Folosete
Scop partajarea pentru a suine implementarea eficient a unui numr mare de obiecte cu
granulaie fin (structur complex)- de exemplu caractere individuale sau iconie pe ecran

Folosii cnd toate condiiile de mai jos sunt ndeplinite simultan:


O aplicaie folosete un numr mare de obiecte
Costurile de stocare sunt ridicate din cauza numrului mare de obiecte
Cea mai mare parte din starea unui obiect poate fi fcut extrinsec
Multe grupuri de obiecte se pot nlocui de un numr relativ mic de obiecte partajate,
odat ce am lturat starea extrinsec
Aplicaia nu depinde de identitatea obiectelor. ntruct obiectele flyweight pot fi
partajate, testele de identitate vor ntoarce true pentru obiecte conceptual distincte

Flyweight (Glyph)
Declar o interfa prin care
flyweight primesc starea
extrinsec i pot aciona
asupra ei
ConcreteFlyweight (Character)
Implementeaz interfaa
Flyweight i adaug stocarea
strii intrinseciindependent de contextul
obiectului; trebuie s fie
partajabil
UnsharedConcreteFlyweight (Row,
Column)
Nu toate subclasele
Flyweight trebuie s fie
partajate, deseori obiectele
UnsharedConcreteFlyweight

ablonul Command
de Baz
Aspecte
Scop
ncapsuleaz cereri ca obiecte, i permite:
parametrizarea clienilor cu diferite cereri
nlnuirea sau log-area cererilor
suport pentru operaii anulabile (UNDO)
Aplicabilitate
Parametrizarea obiectelor
Specificarea, nlnuirea, i executarea cererilor la diferite momente
Suport undo
Modelarea tranzaciilor
structurarea sistemelor construite pe operaii primitive, n jurul operaiilor de
nivel nalt

Structur

ablonul Mediator

Participani
Command
declar interfaa pentru executarea
operaiei
ConcreteCommand
asociaz o aciune concret unei
cereri
Invoker
solicit comenzii s execute cererea
Receiver
tie cum s execute operaiile
asociate cu ndeplinirea unei cereri.
Client
creeaz o comand concret

Scop de Baz
Aspecte

Definete un obiect ce ncapsuleaz cum interacioneaz o mulime de obiecte


Promoveaz cuplajul redus prin faptul c obiectele nu mai fac referin direct unele la
altele, permind varierea independent a interaciunii lor
Aplicabilitate
Folosii Mediator cnd:
O mulime de obiecte comunic ntr-un mod bine definit dar complex;
Interdependenele sunt nestructurate i dificil de neles;
Refolosirea unui obiect este dificil deoarece comunic cu prea multe alte obiecte
Un comportament distribuit ntre mai multe clase ar trebui s fie readaptabil fr

Mediator (DialogDirector)
Definete o interfa pentru
comunicarea cu obiectele Colleague
ConcreteMediator (FontDialogDirector)
Implementeaz comportamentul
cooperativ prin coordonarea
obiectelor Colleague
i cunoate i i menine colegii
Clasele Colleague (ListBox,
EntryField)
Fiecare clas Colleague i cunoate
obiectul Mediator
Fiecare coleg comunic cu

ablonul

Aspecte de Baz
Scop
Definete o familie de algoritmi, ncapsuleaz fiecare algoritm, i face interschimbabili
Permite algoritmului s varieze independent de clienii ce l folosesc
Aplicabilitate
Sunt necesare variante diferite ale unui algoritm
Un algoritm folosete date despre care clienii nu trebuie s tie
evit expunerea structurilor de date complexe, specifice algoritmului
Multe clase relaionate difer doar prin comportament
configureaz o clas cu un comportament particular
Participani
Strategy
declar o interfa comun
tuturor algoritmilor.
Context folosete aceast
interfa pentru a apela
algoritmul definit de o clas
ConcreteStrategy
ConcreteStrategy
implementeaz algoritmul
folosind interfaa Strategy
Context
configurat cu un obiect
ConcreteStrategy
poate defini o interfa ce
permite obiectelor Strategy s
ablonul
i acceseze datele
Aspecte
Scop de Baz
permite unui obiect s i modifice comportamentul cnd i se modific starea
intern
obiectul va prea c i schimb clasa
Aplicabilitate
comportamentul obiectului depinde de starea sa
trebuie s i modifice comportamentul la execuie n funcie de stare
operaii cu instruciuni condiionale multiple, depinznd de starea obiectului
starea reprezentat de una sau mai multe constante enumerate
mai multe operaii cu aceeai structur condiional

Context
definete interfaa de
interes pentru clieni
menine o instan a unei
subclase ConcreteState
State
definete o interfa
pentru ncapsularea
comportamentului asociat
cu o stare particular a
Contextului
ConcreteState
fiecare subclas
implementeaz un
comportament asociat cu

ablonul
Aspecte de Baz
proxy (n. pl prox-ies) Agent pentru o persoan care se comport ca substitut pentru aceasta, autoritatea de
Scop
Furnizeaz un surogat (substitut) pentru alt obiect pentru a controla accesul la el
Aplicabilitate
Oricnd este nevoie de o referin ctre un obiect mai flexibil sau mai sofisticat dect un
simplu pointer
Proxy la distan
Proxy virtual
Proxy de Protecie
Proxy -accesorii (pointeri inteligeni)
Previn tergerea accidental a obiectelor (numr referinele)
Proxy
Menine o referin ce permite proxyului s acceseze subiectul real
Furnizeaz o interfa identic cu a lui
Subject
Astfel c proxy poate fi substituit
subiectului real
Controleaz accesul la subiectul real
Poate fi responsabil de crearea i
tergerea acestuia
Subject
Definete interfaa comun pentru
RealSubject i Proxy
RealSubject
Definete obiectul real pe care l
nlocuiete proxy

ablonul

Scop
Decupleaz o abstraciune de implementarea sa
Permite implementrii s varieze independent de abstraciunea sa
Abstraciunea definete i implementeaz interfaa
Toate operaiile din abstraciune apeleaz metode din obiectul de
implementare
n ablonul Bridge ...
... o abstraciune poate folosi implementri diferite
abstraciuni
Abstraction
... o implementare poate fi folosit n diferite
Definete interfaa abstraciei
Menine o referin la un obiect de tip
Structur
Implementor
Implementor
definete interfaa pentru clasele de
implementare
Nu corespunde neaprat
interfeei Abstraction
Implementor conine operaii
primitive,
Abstraction definete operaiile
de nivel nalt bazate pe aceste
primitive
RefinedAbstraction
Extinde interfaa definit de
Abstraction
ConcreteImplementer
implementeaz interfaa Implementor
interface, definind o implementare
concret

ablonul Prototype
Scop
Introducere
Specificai tipul obiectelor care se creeaz folosind o instan prototipic
Creai obiecte noi copiind acest prototip
Aplicabilitate
cnd un sistem trebuie s fie independent de cum sunt create, compuse i reprezentate
produsele sale i
cnd clasele de instaniat sunt specificate la execuie
evitai construirea unei ierarhii de clase-factory paralel cu ierarhia claselor de produse

Prototype
declar o interfa pentru a se clona.
ConcretePrototype
implementeaz o operaie pentru a se clona.
Client
creeaz un obiect nou cernd prototipului s
se cloneze.
Un client cere unui prototip s se cloneze.
Clasa client trebuie s se iniializeze n constructor

ablonul Iterator
Sco

Furnizeaz o modalitate de accesare secvenial a elementelor unui agregat, fr a expune reprezentarea


Aplicabilitate
Folosii ablonul Iterator:
Pentru a accesa coninutul unui obiect agregat fr s i expunei reprezentarea intern
Pentru a susine traversri multiple ale obiectelor agregat
Pentru a furniza o interfa uniform de traversare a diferitelor structuri agregat (i.e. pentru a
susine iteraii polimorfice)

Structur

Participani
Iterator
Definete o interfa pentru traversarea i
accesarea elementelor
ConcreteIterator
Implementeaz interfaa Iterator
ine evidena poziiei curente n
traversarea agregatului
Aggregate
Definete o interfa pentru crearea unui
obiect Iterator
ConcreteAggregate
Implementeaz interfaa de creare
Iterator, pentru a ntoarce o instan
potrivit de ConcreteIterator

Colaborri
Clientul
creeaz obiectul Director i l configureaz cu obiectul Builder dorit
(versiunea particular de subclas);
Directorul notific Builder-ul cnd trebuie construit o nou parte a
obiectului;
Builder-ul preia cererile de la Director i adaug prile la produs (pe rnd);
Clientul preia produsul de la Builder

Metoda Factory
Scop de Baz
Aspecte

Definete o interfa pentru crearea unui obiect, dar las subclasele


s decid ce clas s instanieze.
Metoda Factory permite unei clase s defere instanierea subclaselor
Cunoscut i ca
Constructor Virtual
Aplicabilitate
O clas nu poate anticipa clasa obiectelor pe care trebuie s le creeze
O clas dorete ca subclasele sale s specifice obiectele pe care le
creeaz
Clasele deleg responsibilitatea uneia sau mai multor subclase

Product & Colaborri


Participani

definete interfaa obiectelor ce vor fi create de FM


Produs Concret implementeaz interfaa
Creator
declar FM, care returneaz un produs de tip Product.
poate defini o implementare implicit a FM
poate apela FM pentru crearea unui produs
ConcreteCreator
suprascrie FM pentru a furniza o instan a ConcreteProduct
Creator se bazeaz pe subclasele sale pentru definirea metodei factory astfel nct s
returneze instana potrivit a clasei ConcreteProduct

ablonul Observer
Scop
Definii o dependen unul-la-mai-muli ntre obiecte astfel nct atunci
cnd un obiect i schimb starea, toate dependenele sale sunt
anunate i actualizate automat
Fore
Pot exista muli observatori
Fiecare observator poate reaciona diferit la aceeai notificare
Sursa de date (subiectul) trebuie s fie ct mai decuplat posibil de
observator(i)
Structura ablonului Observer

ablonul Builder CREAIONAL


Scopcomplex de reprezentarea sa, astfel nct
Separ construirea unui obiect
acelai proces de construcie poate genera reprezentri diferite

Aplicabilitate
Folosii Builder
cnd:
algoritmul pentru crearea obiectului complex trebuie s fie independent de prile ce
compun obiectul i de modul lor de asamblare;
procesul de construcie trebuie s permit reprezentri diferite pentru obiectul construit;
Structur

Builder
Participani
Specific o interfa abstract pentru
crearea prilor unui obiect Product
ConcreteBuilder
Construiete i asambleaz prile
produsului prin implementarea
interfeei Builder
Definete i ine evidena
reprezentrilor pe care le creeaz
Furnizeaz o interfa pentru
preluarea produsului
Director
Construiete un obiect folosind
Product
interfaa Builder
Reprezint obiectul complex care se construiete. ConcreteBuilder construiete reprezentarea
intern a produsului i definete procesul prin care el este asamblat
Include clasele ce definesc prile constituente, inclusiv intrerfeele pentru asamblarea

S-ar putea să vă placă și