Documente Academic
Documente Profesional
Documente Cultură
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
Structur Adapter
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
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
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
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
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
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
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