ingineria programarii: sabloane de proiectare comportamentale 1
TRANSCRIPT
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
1/89
Ingineria programrii
9. abloane de proiectarecomportamentale (Ib)
Florin LeonUniversitatea TehnicGheorghe Asachi din IaiFacultatea de Automatici Calculatoare
http://florinleon.byethost24.com/curs_ip.htm
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
2/89
abloane de proiectarecomportamentale (Ib)
1. Observatorul2. Comanda
3. Lanul Responsabilitilor4. Mediatorul
5. Memento
6. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
3/89
3
Terminologie
Observer = Observator
Command = Comand
Chain of Responsibility = Lanul Responsabilitilor
Mediator
Memento
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
4/89
Not
Programele care implementeaz abloaneledescrise i care pot fi descrcate din paginacursului sunt parte integrant a prezentrii
4Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
5/89
abloane de proiectarecomportamentale (Ib)
1. Observatorul2. Comanda
3. Lanul Responsabilitilor4. Mediatorul
5. Memento
6. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
6/89
6
Staia meteorologic
Exist maimulte tipuri de
afiareApelat automatcnd valorile se
schimbFlorin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
7/89
7
Abordarea 1
citete ultimele valori
actualizeazafirile
Modificri?
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
8/89
8
ablonul Observator
Analogie
Abonaii unui ziar
Ct timp sunt abonai, ei primesc ziarul
Pot renuna la abonament
Ziarul primete continuu cereri de abonare idezabonare
Ziarele sunt trimise doar celor abonai
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
9/89
9
Definiie
ablonul Observatordefinete o dependen1 la N ntre obiecte, astfel nct n cazul n care un
obiect i schimb starea, vor fi ntiinate i
actualizate automat toate obiectele sale dependente
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
10/89
10
Diagrama de clase
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
11/89
11
Diagrama de secvene
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
12/89
12
Cuplarea slab
Obiectele care interacioneaz au puine cunotineunul despre altul
Interdependena dintre obiecte este minimizat
n ablonul Observator Subiectul este singurul proprietar al datelor caracteristice
ablonului
Subiectul tie doar c observatorii implementeaz o interfa
(Update) Se pot aduga oricnd noi observatori
Se pot aduga noi tipuri de observatori
Schimbrile din subiect nu afecteaz observatorii i viceversa
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
13/89
13
Protocoale specifice
Modelul de extragere (engl. pull) Subiectul trimite doar o notificare minimal iar
apoi observatorii cer n mod explicit detalii
Update(void)+ proprieti saumetode get accesatede observatori
Modelul de mpingere (engl. push)
Subiectul trimite informaii detaliate despreschimbare, indiferent dac observatorii au nevoiesau nu de toate informaiile Update(informaii)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
14/89
14
Diagrama aplicaiei
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
15/89
15
Interfeele
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
16/89
16
Alte clase
WeatherData : ISubject
CurrentConditionsDisplay : IObserver, IDisplayElement
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
17/89
17
Alte exemple
Structur...
Stocks...
Culori...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
18/89
Structur
18
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
19/89
Stocks
19
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
20/89
Culori
20
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
21/89
Discuie
Viteza crete dac subiecii au referine laobservatori. Dac ns muli subieci nu auobservatori, utilizarea memoriei este ineficient.
Se poate folosi o tabel global de perechi(Subiect, Observator)
Fiecare observator poate specifica aspectele de
care este interesat i va primi notificri i date doarn legatur cu aceste aspecte
21
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
22/89
Discuie
Pot exista multe obiecte simultan subieci iobservatori
Pentru evitarea dependenelor circulare, fiecare
notificare are o etichet temporal (timestamp) Notificrile care sunt rezultate ale altor notificri
au aceeai etichet
Dac un observator primete o notificare cu aceeai
etichet ca notificarea trimisde el ca subiect, nu maicontinu propagarea
Niciun obiect nu trimite dou notificri separate cuaceeai etichet temporal
22
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
23/89
23
Discuie
n abordarea GoF, dac relaia dintre subieci iobservatori este foarte complex, poate exista un obiectintermediar ChangeManagercare s gestioneze acesteinteraciuni
Cnd exist mai muli subieci interdependeni,observatorii trebuie notificai o singur dat dup cetoi
subiecii au finalizat modificrile
Obiectul ChangeManagereste un observator pentru cprimete notificri asupra schimbrilor i un subiectpentru c notific observatorii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
24/89
24
Change Manager
DAG = Directed Acyclic Graph
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
25/89
25
Aplicabilitate
ablonul se folosete cnd un obiect trebuies reacioneze la schimbrile din alt obiect iarobiectele trebuie s fie slab cuplate Evenimentele componentelor interfeei cu
utilizatorul
Evenimente acionate de timp: momente
predeterminate, timere, triggere n baze de date Model-View-Controller: ntre model i vizualizri
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
26/89
abloane de proiectarecomportamentale (Ib)
1. Observatorul2. Comanda
3. Lanul Responsabilitilor4. Mediatorul
5. Memento
6. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
27/89
27
Telecomanda universal
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
28/89
28
Obiectul de comand
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
29/89
29
Exemplu de utilizare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
30/89
30
Paii de execuie
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
31/89
31
Definiie
ablonul Comandncapsuleaz o cerere caobiect, permind: parametrizarea clienilor cu diferite cereri(trimiterea
ca parametru a unei funcii ncapsulate ntr-un obiect) formarea unei cozi de cereri sau stocarea istoricului
acestora (engl. logging)
asigurarea suportului pentru anularea operaiilor
(engl. undo)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
32/89
32
Diagrama de clase
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
33/89
33
Diagrama de secvene
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
34/89
34
Atribuirea comenzilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
35/89
35
Implementare
Obiect nul:
elimin necesitateaunui test pentru null
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
36/89
36
Implementare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
37/89
37
Anularea (undo)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
38/89
38
Implementare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
39/89
39
Folosirea strii pentru anulare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
40/89
40
Comenzi macro
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
41/89
41
Construirea macro-ului
Party Mode
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
42/89
42
Alte exemple
Structur...
Calculator...
Comenzi de anulare...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
43/89
Structur
43
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
44/89
Calculator
44
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
45/89
Comenzi de anulare
45
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
46/89
46
Alte utilizri
Formarea unei cozi de cereri
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
47/89
47
Alte utilizri
Stocarea istoricului cererilor (engl. logging)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
48/89
48
Aplicabilitate
Cnd este necesar delegarea rspunsului laevenimente al unui client de la o clas de invocarela alt clas ce ncapsuleaz reacia
Cnd trebuie diminuat cuplarea ntre clieni iobiectele receiver
Pentru ncapsularea codului de tratare a
evenimentelor, de exemplu evenimentele .NET button.Click += new System.EventHandler(button_Click);
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
49/89
49
Discuie
Pentru pstrarea mai multor operaii de anulare,se poate folosi o stiv de comenzi
Pentru implementarea unei comenzi macro, se
poate folosi o Compunere(engl. Composite)
n cazul n care o comand trebuie copiatpentru introducerea n lista cronologic, se
poate folosi Prototipul
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
50/89
abloane de proiectarecomportamentale (Ib)
1. Observatorul2. Comanda
3. Lanul Responsabilitilor4. Mediatorul
5. Memento
6. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
51/89
51
Exemplu
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
52/89
52
Definiie
ablonul Lanul responsabilitilor evitcuplarea ntre expeditorul i destinatarul uneicereri, acordnd mai multor obiecte o ans de
a rezolva cererea. ablonul nlnuie obiecteledestinatar i trece cererea de-a lungul lanuluipn cnd un obiect o rezolv
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
53/89
53
Diagrama de clase
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
54/89
54
Diagrama de secvene
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
55/89
55
Exemple
Structur...
Cereri de cumprare...
Imagini, fiiere i culori...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
56/89
Structur
56
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
57/89
Cereri de cumprare
57
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
58/89
Imagini, fiiere i culori
58
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
59/89
59
Aplicabilitate
Cnd cererea poate fi rezolvat de mai multeobiecte iar obiectul care o va rezolva nu este
cunoscut a priori
Obiectul care rezolv cererea este stabilit dinamic Cnd trebuie generat o cerere ctre unul sau mai
multe obiecte, fr a preciza n mod explicitdestinatarul
Cnd mulimea de obiecte care pot rezolva o cereretrebuie construit dinamic
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
60/89
Exemplu din lumea real
Servlet-uri Java: doFilter
60
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
61/89
61
Avantaje i dezavantaje
Reduce cuplarea
Expeditorul i destinatarul nu se cunosc explicit
Un obiect nu tie structura lanului
Crete flexibilitatea Noi responsabiliti pot fi adugate sau unele pot fi eliminate
prin modificarea structurii lanului
Recepia nu este garantat O cerere poate rmne nerezolvat dac ajunge la sfritul
lanului (dac niciun obiect nu o poate rezolva sau dac lanulnu este corect configurat)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
62/89
62
Discuie
Lanul Responsabilitilorpoate fi aplicatn conjuncie cu ablonul Compunere(engl. Composite)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
63/89
abloane de proiectarecomportamentale (Ib)
1. Observatorul2. Comanda
3. Lanul Responsabilitilor4. Mediatorul
5. Memento
6. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
64/89
64
Exemplu
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
65/89
65
Soluie
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
66/89
66
Definiie
ablonul Mediator definete un obiect carencapsuleaz modul n care interacioneazo mulime de obiecte. Acest ablon promoveaz
cuplarea slab, interzicnd obiectelor s facreferine explicite unul la cellalt i permitemodificarea independent a interaciunilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
67/89
67
Diagrama de clase
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
68/89
68
Diagrama de secvene
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
69/89
69
Exemple
Structur...
Camera de chat...
Liste...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
70/89
Structur
70
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
71/89
Camera de chat
71
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
72/89
Liste
72
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
73/89
73
Aplicabilitate
Cnd o mulime de obiecte comunic pe cibine definite dar complexe
Interdependenele rezultate nu sunt structurate i
sunt dificil de neles Cnd este dificil reutilizarea unui obiect
deoarece el refer i comunic cu mai multealte obiecte
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
74/89
Exemplu din lumea real
System.Windows.Forms.Formn .NET
Un formular are multe controale care nu tiu unul deexistena celorlalte
De exemplu: cnd utilizatorul alege un element dintr-unListBox, se afieaz un mesaj ntr-un TextBox i seactiveaz un GroupBox
ListBox-ul, TextBox-ul i GroupBox-ul nu comunic
direct, ci prin intermediul Form-ului
74
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
75/89
75
Avantaje i dezavantaje
Decupleaz colegii
Simplific protocoalele de comunicare ntreobiecte
Abstractizeaz modul de cooperare dintre obiecte
Centralizeaz controlul
God object
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
76/89
76
Discuie
Faadaabstractizeaz un subsistem n modunidirecional. Mediatorulpermite colaborareaobiectelor i acioneaz multidirecional
Colegiipot s comunice cu mediatorulfolosindablonul Observator
Obiectul ChangeManager din ablonul
Observator este un Mediator i poate fiSingleton
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
77/89
abloane de proiectarecomportamentale (Ib)
1. Observatorul2. Comanda
3. Lanul Responsabilitilor4. Mediatorul
5. Memento
6. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
78/89
78
Exemplu
Salvarea strii unui joc
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
79/89
79
Definiie
ablonul Memento captureaz i exteriorizeazstarea intern a unui obiect fr a viola
ncapsularea, astfel nct obiectul s poat fi
readus ulterior la respectiva stare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
80/89
80
Diagrama de clase
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
81/89
81
Diagrama de secvene
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
82/89
82
Exemple
Structur...
Vnzri...
Dreptunghiuri...
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
83/89
Structur
83
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
84/89
Vnzri
84
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
85/89
Dreptunghiuri
85
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
86/89
86
Aplicabilitate
Cnd trebuie salvat un instantaneu al strii unuiobiect (sau al unei poriuni din stare), astfel nctacesta s poat fi readus ulterior la acea stare
Cnd o interfa direct pentru obinerea striiar expune detaliile implementrii i ar viola
ncapsularea obiectului
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
87/89
87
Avantaje i dezavantaje
Pstreaz limitele ncapsulrii
Simplific obiectul Originator Obiectul nu mai trebuie s rein el nsui istoricul
strilor
Utilizarea Memento-urilor poate fi costisitoare
Copierea unui volum mare de date
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
88/89
88
Discuie
O Comandpoate utiliza obiecte Mementopentru operaiile de anulare (engl. undo)
Obiectele Mementopot fi manipulate cu
ajutorul unui Iterator
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
-
8/13/2019 Ingineria programarii: Sabloane de proiectare comportamentale 1
89/89
Concluzii
Observatorulpermite ca un obiect s notifice alte obiecteatunci cnd se produc modificri n starea sa intern
Comandaeste un obiect-funcie care ncapsuleazapelul unei metode din alt obiect
Lanul Responsabilitilorncearc rezolvarea unei cerericu ajutorul unui numr necunoscut n mod explicit deobiecte
Mediatorulncapsuleaz protocolul de comunicare alobiectelor
Mementoreprezint starea intern a unui obiect la unanumit moment de timp