Professional Documents
Culture Documents
Viselkedési minták
Krizsán Zoltán1
[2012. április 2.]
2012. április 2.
Viselkedési minták
1 Viselkedési minták
Parancs (Command)
Meggyel® (Observer)
Felel®ség lánc (Chain of responsibility)
Közvetít® (Mediator)
Viselkedési minták
Tartalom
1 Viselkedési minták
Parancs (Command)
Meggyel® (Observer)
Felel®ség lánc (Chain of responsibility)
Közvetít® (Mediator)
Viselkedési minták
Cél
Motiváció
Alkalmazhatóság
Commit támogatás
A m¶veletek ismét végrehajtásának támogatása
Undo támogatás
A m¶veletek visszavonásának támogatása Unexecute m¶velet
szükséges hozzá Wizard-ok Swing Progress bar
Naplózás
Változások naplózása rendszerösszeomlás, helyreállítás esetén.
Viselkedési minták
Felépítés
<<Interface>>
Invoker mCommand Command
0..1 +execute()
Résztvev®k
Együttm¶ködés
Kévetkezmény
El®nyök
A Parancs(Command) minta alkalmazása feloldja a
kapcsolatot a m¶veletet kezdeményez® és az azt végrehajtó
objektumok között.
A parancs objektumok is ugyanúgy használhatók és
kib®víthet®k, tipikus objektumok.
A parancsok összetett parancsokká rendezhet®k, mint például
makrót képezve.
Parancsot osztálymódosítás nélkül vehetünk fel.
Lehet®vé teszi a párhuzamos feldolgozást.
Hátrányok
Sok kis osztályt kell írni.
Sok kis objektum keletkezik.
Viselkedési minták
Tartalom
1 Viselkedési minták
Parancs (Command)
Meggyel® (Observer)
Felel®ség lánc (Chain of responsibility)
Közvetít® (Mediator)
Viselkedési minták
Cél
Motiváció
Modell-Nézet-Vezérl® (MVC) vagy Document-View architektúránál
gyakran el®fordul, hogy a felhasználó megváltoztatja az egyik
nézeten az adatokat, ezeket a többi nézeten is frissíteni kell,
következetességet fent kell tartani. Egy táblázatkezel® különböz®
adatmegjelenítéseket használ, megjelenítheti táblázatként és
diagramként is az információt. A két megjelenítési objektum nem
tud egymásról elég nekik a szükséges objektumok újrahasznosítását
elvégezni. Ha felhasználó módosít egy adatot a táblázatban, akkor
ezzel egy id®ben a diagram is módosul és fordítva is.
Ezt nem célszer¶ szoros kötéssel megoldani, mert akkor csökken az
osztályok újra felhasználásának lehet®ségeinek száma. Erre jó
megoldást nyújt a Meggyel® (Observer) minta. Megadja a
szükséges kapcsolatok megvalósításának módját. F®objektumai az
Alany (Subject) és a Meggyel® felület (Observer), közöttük 1-több
kapcsolat áll fent.
Viselkedési minták
Alkalmazhatóság
Felépítés
mObservers
<<Interface>> <<Interface>>
Subject Observer
+regiterObserver() +update()
+unregisterObserver()
-notifyObservers()
Résztvev®k
Együttm¶ködés
Kévetkezmény
El®nyök
Laza kapcsolat van az Alany és Meggyel® között, azaz az
Alanynak tudomása van a Meggyel®kr®l, de pontos
információja nincs róla.
Üzenetszórás támogatás, értesítésnek nem kötelez® deniálnia
a fogadóját.
A modell újrafelhasználható!
Új osztályokkal egyszer¶en b®víthet® a struktúra a modell és
nézet osztály módosítása nélkül.
Az Alany (Subject) objektum változáskor informál több más
objektumot úgy, hogy lenne róluk bár mi információja is.
Hátrány
El®fordulhatnak szükségtelen, váratlan frissítések a nem
precízen deniált függ®ségi feltételek következtében.
Viselkedési minták
Tartalom
1 Viselkedési minták
Parancs (Command)
Meggyel® (Observer)
Felel®ség lánc (Chain of responsibility)
Közvetít® (Mediator)
Viselkedési minták
Cél
Motiváció
Vegyünk egy grakus felhasználói felület, amihez környezett®l
függ® help rendszert akarunk csinálni.
A felhasználó a felület bármely részére kattint, kapjon
speciálisabbat.
Alkalmazhatóság
Felépítés
-nextHandler
<<Interface>>
Client Handler
+handle()
ConcreatHandler1 ConcreatHandler3
+handle() +handle()
ConcreatHandler2
+handle()
Viselkedési minták
Résztvev®k
Együttm¶ködés
Következmény
Szervlet sz¶r® is ezt használja: javax.servlet.Filter#doFilter(),
FilterChain
El®nyök
A kérést küld® objektum nem ismeri a kiszolgáló
objektumokat. Még a számát sem.
A kérést feldolgozó sem ismeri a küld®t, csak a következ®t.
Egyszer¶ szerkezet, csak a következ® elemet ismerik.
Rugalmas, futás id®ben is módosítható.
Hátrányok
A kérések nem egy konkrét objektumhoz fut be, ezért nem
garantált, hogy kiszolgálják. (Bár lehet végigfut a láncon, de
senki nem vállalja el.)
Lehet, hogy rosszul kongurálják.
Viselkedési minták
Feladat I
Tartalom
1 Viselkedési minták
Parancs (Command)
Meggyel® (Observer)
Felel®ség lánc (Chain of responsibility)
Közvetít® (Mediator)
Viselkedési minták
Cél
Motiváció
Alkalmazhatóság
Felépítés
Colleague1
<<Interface>>
Mediator mediator
Colleague2
mediator
ConcreateMeditor1
ConcreateMeditor2
Viselkedési minták
Résztvev®k
Együttm¶ködés
Következmény
Feladat I
Készítsünk egy dialógus alapú grakus alkalmazást melyben
egy varoslita lista ablak található a lehetséges elemekkel
(Városok nevei),
beviteli mez®,
másik kivalasztottVarosok lista a felvett városok neveivel,
hozzáad gomb,
töröl gomb
A következ® képen m¶ködjön:
Ha a varoslista lista egy eleme ki van választva, akkor
másoljuk be a szöveg tartalmát a beviteli mez®be,
városok listájába.
Feladat II