diagramy maszyn stanowych, wzorce...
Embed Size (px)
TRANSCRIPT
Diagramy maszyn stanowych, wzorce projektowe Wykad 5 cz 2
Zofia Kruczkiewicz
1Zofia Kruczkiewicz Inynieria oprogramowania INEK011
Wzorce projektowe
1. Identyfikacja wzorcw projektowych
2. Przegld wzorcw projektowych
2.1. Wzorce kreacyjne
2.2. Wzorce strukturalne
2.3. Wzorce zachowania
3. Dodatek - uzupenienie
2Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Zofia Kruczkiewicz Inynieria oprogramowania INEK011 3
Wzorce projektowe
1. Identyfikacja wzorcw projektowych
4
Identyfikacja wzorcw projektowych
Kady wzorzec skada si z trzech czci, ktre wyraaj zwizek midzy konkretnym kontekstem, problemem i rozwizaniem (Christopher Aleksander)
Kady wzorzec to trzyczciowa regua, ktra wyraa zwizek midzy konkretnym kontekstem, rozkadem si powtarzajcym si w tym kontekcie i konfiguracj oprogramowania pozwalajca na wzajemne zrwnowaenie si tych si w celu rozwizania zadania. (Richar Gabriel)
Wzorzec to pomys, ktry okaza si uyteczny w jednym rzeczywistym kontekcie i prawdopodobnie bdzie uyteczny w innym. (Martin Fowler)
Dobrze zbudowany system obiektowy jest peen wzorcw obiektowych Wzorzec to zwyczajowo przyjte rozwizanie typowego problemu w
danym kontekcie Struktur wzorca przedstawia si w postaci diagramu klas Zachowanie si wzorca przedstawia si za pomoc diagramu sekwencji Wzorce projektowe: Wzorzec reprezentuje powizanie problemu z
rozwizaniem(wg Booch G., Rumbaugh J., Jacobson I., UML przewodnik uytkownika)
Zofia Kruczkiewicz Inynieria oprogramowania INEK011
Zofia Kruczkiewicz Inynieria oprogramowania INEK011 5
Wzorce projektowe
2. Przegld wzorcw projektowychGang of Four skrt odnoszcy si do autorw ksizki:
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software
1. Identyfikacja wzorcw projektowych
Zofia Kruczkiewicz Inynieria oprogramowania INEK011 6
Wzorce projektowe
2.1. Wzorce kreacyjne
1. Identyfikacja wzorcw projektowych2. Przegld wzorcw projektowych
Gang of Four skrt odnoszcy si do autorw ksizki:Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software
Wzorce kreacyjne - wybr
Wzorzec projektowy Kontekst zastosowania
1)Builder Sposb tworzenia zoonychobiektw
2)Abstract Factory Rodziny obiektw
3)Factory Method Podklasa tworzonego obiektu
4)Prototype Typ klasy tworzonego obiektu
5)Singleton Jedna kopia obiektu
Cel stosowania: Izolacja regu tworzenia obiektw od reguokrelajcych sposb uywania obiektw (oddzielenie wkodzie programu kodu tworzcego obiekty od kodu, ktryuywa obiekty) klasy typu Control
7
1) Budowniczy - Builder
Kod klasy uywajcej obiekt typu
Director jest niezaleny od formatu
danych zapisanych w pliku, gdy
format produktu jest zawsze tego
samego typu
ASCII format ASCII konwerter
z formatw RTF lub
XML
8Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
9Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
10
Charakterystyka wzorca Builder
Problem: Tworzenie dowolnych obiektw zoonych reprezentowanych w zrnicowany sposb oraz oddzielenie konstrukcji obiektw zoonych od ich reprezentacji.
Rozwizanie: Obiekt typu Director zleca budow obiektu typu Product obiektom typu ConcreteBuilder implementujcych interfejs Builder
Klient wzorca: Klient zleca obiektowi typu Director wykonanie obiektu Product dostarczajc mu obiekt typu ConcreteBuilder
10Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Rezultat:
Udostpniony obiektom typu Director abstrakcyjny interfejs Builderpozwala na dowolny sposb konstruowania obiektw typu Product
Oddzielenie kodu sucego do konstruowania obiektw typu Product od kodu sucego do uywania tych obiektw np. obiekty typu Director utworzone do odczytu dokumentw w formacie RTF nie wpywaj na kod klienta wzorca (Client), ktry zajmuje si analiz treci dokumentw a jednoczenie moe zleci obiektowi typu Director za pomoc obiektu typu ConcreteBuilder wygenerowanie tej treci jako innego zoonego obiektu typu Product np. reprezentujcego format XML
Algorytm tworzenia obiektu typu Product jest niezaleny od tworzonych skadowych, ktre mog by dowolnego typu
Lepsza kontrola budowy obiektu typu Product przez obiekt ConcreteBuilder za porednictwem implementowanych operacji interfejsu Builder i sterowanych przez obiekt typu Director
Pokrewne wzorce: Fabryka abstrakcyjna
11Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
2) Fabryka abstrakcyjna Abstract Factory
12Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
13Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
14
Przykad 1 - zastosowanie wzorca Abstract Factory
Zofia Kruczkiewicz Inynieria oprogramowania INEK011
15
(1) Wstawianie nowego tytuu: public String addTitleBook(String data[])
3
2
Zofia Kruczkiewicz, Modelowanie i analiza systemw informatycznych 4
Zofia Kruczkiewicz Inynieria oprogramowania INEK011
16
(2) Tworzenie obiektw z rodziny TitleBookpublic TitleBook createTitleBook(String data[])
Zofia Kruczkiewicz Inynieria oprogramowania INEK011
17
Przykad 2 zastosowanie wzorca Abstract Factory tworzenie obiektw typu ProduktBezPodatku, ProduktZPodatkiem z uwzgldnieniem obiektw typu
Promocja za pomoc obiektu typu Fabryka
Zofia Kruczkiewicz, Modelowanie i analiza systemw informatycznych 4
18
(2) ProduktBez Podatku wykonajProdukt(String dane[])
18
public class Fabryka //Fabryka -decyzje na poziomie tworzenia kodu { public Fabryka() { } public ProduktBezPodatku wykonajProdukt(String dane[]){ ProduktBezPodatku produkt = null;
Promocja promocja;switch ( Integer.parseInt(dane[0]) )
{ case 0: produkt= new ProduktBezPodatku(dane[1], Float.parseFloat(dane[2]));break;
case 1: promocja = new Promocja(Float.parseFloat(dane[3]));produkt = new ProduktBezPodatku (dane[1],
Float.parseFloat(dane[2]),promocja);break;
case 2: produkt = new ProduktZPodatkiem (dane[1], Float.parseFloat(dane[2]), Float.parseFloat(dane[3]));
break;case 3: promocja = new Promocja(Float.parseFloat(dane[4]));
produkt= new ProduktZPodatkiem(dane[1], Float.parseFloat(dane[2]),Float.parseFloat(dane[3]),promocja);
break;}return produkt; }
}19
20
Charakterystyka wzorca Abstract Factory
Problem: Tworzenie waciwych rodzin powizanych lub zalenych obiektw w przypadkach: rne systemy operacyjne, rne wymagania dotyczce efektywnoci, wydajnoci itp. rne wersje aplikacji rne typy aplikacji wsppracujcych (np. rne typy baz danych) rne funkcjonalnoci dla rnych uytkownikw rne grupy elementw zalenych od ustawie zwizanych z lokalizacj
(np. format danych)
Rozwizanie: Obiekt typu Client uywa interfejsu fabryki abstrakcyjnej (AbstractFactory) i interfejsu klas bazowych (AbstractProduct). Instancjami, ktre implementuj te interfejsy s obiektu typu ConcreteFactory i ConcreteProduct. Kady obiekt typu ConcreteFactory potrafi tworzy jedn z rodzin obiektw klas ConcreteProduct.
Klient wzorca: jako obiekt klasy Client zarzdza obiektami tworzonymi przez fabryk obiektw, ale jest niezaleny od regu tworzenia tych obiektw
20
Rezultat:
Izolacja regu tworzenia obiektw od regu okrelajcych sposb uywania obiektw
Okrelenie regu tworzenia obiektw, ktre mog najlepiej realizowa cele aplikacji
Konfiguracja aplikacji za pomoc powizanych rodzin obiektw np. TitleBook i TitleBookRead
System uywa tworzone obiekty znajc klasy bazowe tych obiektw i klasy bazowe fabryk
Utrudnione doczanie nowych typw tworzonych obiektw
Implementacja: Zdefiniowanie klas typu Control . Do wyboru obiektw mona stosowa pliki konfiguracyjne, tabele baz danych itp.
Pokrewne wzorce: Metoda wytwrcza, Prototyp, Singleton
21Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Zofia Kruczkiewicz Inynieria oprogramowania INEK011 22
Wzorce projektowe
2.2. Wzorce strukturalne
1. Identyfikacja wzorcw projektowych2. Przegld wzorcw projektowych
Gang of Four skrt odnoszcy si do autorw ksizki:Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software
2.1. Wzorce kreacyjne
Wzorce strukturalne tworzenie zoonych obiektowych struktur danych
Cel: Skadanie klas i obiektw w wiksze struktury
Wzorce klasowe:
zastosowanie dziedziczenia i polimorfizmu do skadania struktur interfejsw lub ich implementacji
Wzorce obiektowe:
opisuj sposoby skadania obiektw w celu uzyskania nowej funkcjonalnoci. Istnieje moliwo skadania obiektw podczas dziaania programu
23Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Wzorce strukturalne - wybr
Wzorce strukturalne Aspekt, ktry moe si zmieni
1)Adapter - klasowy i obiektowy
Interfejs obiektu
2)Bridge - obiektowy Implementacja obiektu
3)Composite - obiektowy Struktura i schemat obiektu
4) Decorator - obiektowy Zadanie obiektu bez zmiany podklas
5) Facade - obiektowy Interfejs podsystemu
6) Flyweight - obiektowy Koszt przechowywania obiektw w pamici
7)Proxy - obiektowy Sposb dostpu oraz pooenie obiektu
24Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
2) Most - Bridge wzorzec obiektowy
Przykad
26Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
for (int i=1;i
Przykad (cd)
27Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
28
Charakterystyka wzorca Bridge Problem: Naley oddzieli abstrakcj od implementacji, tak aby mogy zmienia si
jedna niezalenie od drugiej Rozwizanie: Klasa abstrakcyjna (interfejs) typu Abstraction rozszerzana przez
klas abstrakcyjn RedefineAbstraction uywa w swoich metodach metod klasy abstrakcyjnej (interfejs) Implementor, implementowanych przez konkretne klasy ConcreteImplementor wsppracujce z rnymi klasami (o rnych interfejsach) pochodzcych z rnych platform, bibliotek.
Klient wzorca: Klient jednakowo traktuje kady z obiektw klas Abstraction i RedefineAbstraction bez wizania si z konkretna platform, bibliotek
Rezultat: Oddzielenie abstrakcji od implementacji, eliminacja zalenoci podczas
kompilacji lub dziaania programu, wprowadzenie architektury wielowarstwowej
Rozszerzalno hierarchii klas Abstraction i Implementor atwe dodawanie nowych obiektw Ukrywanie szczegw implementacji przed klientami szczegw
implementacji Implementacja: nowa klasa typu Boundry Pokrewne wzorce : Fabryka Abstrakcyjna tworzy i konfiguruje Most; Adapter
28
3) Kompozyt Composite wzorzec obiektowy
29Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
30Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Diagram obiektw wzorca Composite
31Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Przykad zastosowania wzorca Composite
Client
Composite
Leaf32
Problem: Skada obiekty w obiektowe struktury danych (drzewiaste) typu cz-cao
Rozwizanie: Klasa abstrakcyjna (interfejs) typu Component definiuje podstawowe
operacje graficzne dla obiektw typu Leaf i obiektw-rodzicw typu Composite
Klient wzorca: Klient jednakowo traktuje kady z obiektw struktury jako obiekty
typu Component
Rezultat:
Rekurencyjne grupowanie obiektw pierwotnych (typu Leaf) i obiektw zoonych
(typu Composite)
Prosta budowa klienta, ktry nie musi rozrnia obiektw pierwotnych i
zoonych
atwe dodawanie nowych obiektw
Trudno w zachowaniu ogranicze przy budowie obiektw zoonych
Implementacja: nowa klasa typu Boundry np. w pakiecie Swing
klasa JComponent reprezentuje klas typu Component,
natomiast klasa JButton klas typu Leaf,
natomiast klasa JPanel reprezentuje klas typu Composite.
Pokrewne wzorce: Dekorator, acuch Zobowiza, Dekorator, Pyek (brak referencji
do rodzicw, ale wspdzielenie komponentw), Iterator, Visitor
Charakterystyka wzorca Composite
33
5) Fasada - Facade wzorzec obiektowy
34Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
35
Wzorzec Facade
Warstwa 1
Warstwa 2
Klasa_C
Klasa_B
Klasa_A Klasa_1
Klasa_2
Klasa_3
Klient 2
Warstwa 1
Warstwa 2
fasada A Klient 1
Klient 2
Klient 3
Klasa_3
Klasa_2
Klasa_1 Klasa_A
Klasa_B
Klasa_C
Klient 1
fasada B
Klient 3
35Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Przykad 1 zatosowania wzorca Facade
Facade
36
Zofia Kruczkiewicz Inynieria oprogramowania INEK011
37
Przykad 2 zatosowania wzorca Facade za pomoc obiektu typu Aplikacja
38
Charakterystyka wzorca Facade
Problem: udostpnienie tylko wybranych funkcji warstwy systemu
Rozwizanie: Stanowi interfejs lub interfejsy warstwy systemu-kilka fasad grupuje metody dla wybranych podsystemw
Klient wzorca: otrzymuje jedynie potrzebne metody Rezultat:
Udostpnienie istotnych metod warstwy systemu np. reprezentujcych przypadki uycia hermetyzacja klas warstwy systemu
Fasada moe uniemoliwia dostp do wszystkich metod hermetyzowanych klas
Implementacja: nowa klasa typu Control np. SessionBean1, ApplicationBean1
Pokrewne wzorce: Mediator (ktry dodatkowo wprowadza now funkcjonalno), wsppraca z Fabryk Abstrakcyjn, Singleton
38Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
6) Pyek - Flyweight wzorzec obiektowy
39Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Przykad 1 zastosowania wzorca Flyweight tworzenie rezerwacji ksiki wybranemu klientowi za pomoc oietw typu Rental
Client
ConcreteFlyweight
UnsheredConcreteFlyweight
Client
ConcreteFlyweight
40
4141
42
Zofia Kruczkiewicz Inynieria oprogramowania INEK011
43
44
Przykad 2 zastosowania wzorca Flyweight tworzenie obiektw typu Book
Client
ConcreteFlyweight
ConcreteFlyweight
Client
ConcreteFlyweight
Zofia Kruczkiewicz Inynieria oprogramowania INEK011
45
ConcreteFlyweight
Client
Przykad 3 zastosowania wzorca Flyweight tworzenie obiektw typu Zakup zawierajcych informacj o zakupionym produkcie
Problem: Wielokrotne wykorzystanie tego samego obiektu wspdzielenie obiektw
Rozwizanie: Obiekt typu Flyweight definiuje interfejs obiektw typu ConcreteFlyweight (wspdzielone uycie) oraz typu UnsharedConcreteFlyweight (uyty jednorazowo) uywane przez klientw aplikacji. Obiekty- pyki s tworzone i zarzdzane przez obiekt typu FlyweightFactory
Klient wzorca: przechowuje odwoania do obiektw-pykw
Rezultat:
Oszczdno pamici przez wspdzielenie obiektw- pykw
Implementacja: nowe klasy typu Boundry lub Entity np.
referencja tego samego obiektu typu Client (pyek) moe by przechowywana w wielu obiektach typu Reservation (klient);
Referencja obiektu Book (pyek) moe by przechowywana w wielu obiektach typu Reservation (klient), a tylko w jednym typu Rental (klient);
Pokrewne wzorce: Kompozyt (wspdzielenie wzow typu Leaf), Stan, Strategia
Charakterystyka wzorca Flyweight
46
Zofia Kruczkiewicz Inynieria oprogramowania INEK011 47
Wzorce projektowe
2.3. Wzorce zachowania
1. Identyfikacja wzorcw projektowych2. Przegld wzorcw projektowych
Gang of Four skrt odnoszcy si do autorw ksizki:Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software
2.1. Wzorce kreacyjne2.2. Wzorce strukturalne
Wzorce zachowania
Cel: Przydzielaj algorytmy i zobowizania obiektom,
Obejmuj wzorce obiektw, klas oraz komunikacji midzy obiektami
48Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Wzorce zachowania - wybr
Wzorce zachowania Aspekt, ktry moe si zmieni
1) Chain of Responsibility
Obiekt, ktry moe zrealizowa danie
2) Command Warunki i sposb realizacji dania
3) Interpreter Gramatyka i reprezentacja jzyka
4) Iterator Sposb dostpu i przechodzenia elementw kolekcji
5) Mediator Jak i ktre obiekty oddziauj na siebie?
6)Memento Jakie prywatne informacje s przechowywane poza obiektem i kiedy?
7) Observer Liczba obiektw zalecych od innego obiektu;jakzalene obiekty utrzymuj aktualny stan
8) State Stany obiektw
9)Visitor Operacje, ktre mona zastosowa do obiektu (obiektw) bez zmiany jego klasy (ich klas)
10) Strategy Algorytm
11) Template Method Kroki algorytmu 49
1) acuch zobowiza - Chain of Responsibility
50Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
alt
alt
51
52
Charakterystyka wzorca Chain of Responsibility
Problem: Tworzy acuch odbierajcych obiektw i przekazuje wzdu niego danie, a jaki obiekt je obsuy. Umoliwia kontakt nadajcemu danie wicej ni z jednym obiektem i przekazania im obsuenie tego dania
Rozwizanie: interfejs Handler deklaruje interfejs obsugi da i ewentualnieimplementuje odwoanie do nastepnika. Obiekt typu ConcreteHandlerodpowiedzialny za wykrycie i obsug swojego dania; przekazuje danie do swojego nastpnika, jeli nie moe go obsuy.
Klient wzorca: generuje i kieruje dania do listy obiektw ConcreteHandler
Rezutat: Obiekt do obsugi ada typu ConcreteHandler nie ma wyranejwiedzy o innych obiektach z acucha i nie musz zna struktury acucha. acuch zobowiza zwiksza elastyczno w przyznawaniu zgoszeserwisowych poprzez zmian podklasy obiektw i struktur acucha obiektw -ale bez gwarancji otrzymania dania.
Implementacja: Suy do obsugi zdarze
Pokrewne wzorce:
Stosowany w poczeniu z wzorcem Kompozyt (Composite) 52
5) Mediator - Mediator
53Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
54Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Problem: Naley ograniczy znajomo zoonych powiza pomidzyobiektami, ktre oddziauj w zoony sposb i pozwoli na zmiansposobu komunikowania si bez koniecznoci definiowania nowych podklas.Rozwizanie:
Obiekt typu Mediator definiuje interfejs porozumiewania si zobiektami typu Collegue, wic kady obiekt ConcreteColleague znaoperacje obiektu typu ConcreteMediator - kady obiekt typu ConcreteColleague nie musi komunikowa si z innym obiektemConcreteColleaque, ale z obiektem typu ConcreteMediator; obiekt typu ConcreteMediator koordynuje wspprac wielu obiektw typu ConcreteColleague.
Obiekty typu ConcreteColleague wysyaj dania do obiektu typuConcreteMediator, a obiekt typu ConcreteMediator podejmuje decyzj i wysya te wnioski do odpowiednich obiektw typu ConcreteColleague.
55
Charakterystyka wzorca Mediator
Zofia Kruczkiewicz Inynieria oprogramowania INEK011
Rezultat:
Obiekt ConcreteMediator skupia zachowania, ktre byyby umieszczone w wielu obiektach typu ConcreteColleague
Mona czy rne rodzaje obiektw typw ConcreteColleague iConcreteMediator
Uproszczenie protokow komunikacji za pomoc zwizkw jeden-do-wielumidzy obiektami typw ConcreteMediator i ConcreteColleague, zastpujcwiele obiektw typu ConcreteMediator na jeden.
Uoglnienie przez interfejs Mediator wsppracy midzy obiektami, ktreimplementuj interfejs Collegue
Funkcjonalno obiektw, ktre implementuj interfejs Mediator moeprowadzi do bardzo zoonych rozwiza, ktre bd trudne do utrzymania
Pokrewne wzorce:- Obserwator (Observer) moe suy do komunikacji obiektw implementujcych Mediator z obiektami typu ConcreteColleague
56Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
7) Obserwator - Observer
57
58Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Problem: Konieczno okreslenia zalenoci typu jeden-do-wielu midzyobiektami - gdy obiektu zmienia stan, wszystkie obiekty zalene s automatyczniepowiadamiane i aktualizowane
Rozwizanie: Obiekty typu ConcreteSubject zna swoich obserwatorw i ma dostp do wielu obiektw typu ConcreteObserver - kiedy zmienia swj status, powiadamia obserwatorw (interfejs Observer) ich metod aktualizacji (update). Obiekt typu ConcreteObserver ma odwoanie do obiektu typu ConcreteSubject iposiada jego stan, ktry musi by zgodny ze stanem tego obserwowanego obiektutypu ConcreteSubject
Rezultat: Abstrakcyjny zwizek pomidzy obiektami typu ConcreteSubject i obiektw
typu ConcreteObserver Wsparcie dla wysyania wiadomoci - obiekty typu ConcreteSubject przesyaj
zgoszenie, nie znajc odbiorcy Nieoczekiwany modyfikacje, nie zawsze podane - ze wzgldu na fakt, e
obserwatorzy nie wiedz o istnieniu innych obserwatorw Pokrewne wzorce:
Zastosowanie wzorcw Mediator lub Singleton do komunikacji midzy obserwowanymi obiektami i obserwatorami 59
Charakterystyka wzorca Observer
9) Odwiedzajcy - Visitor
60Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
61Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Problem: Naley pozwoli na zdefiniowanie nowej operacji bez zmianydefinicji klasy obiektw, w ktrych ona dziaa.
Rozwizanie: obiekt typu ObjectStructure moe wprowadzi swoje obiekty iumoliwia obiektom, ktre implementuj interfejs Element (i mog byzoone) odwiedzanie przez obiekty implementujce interfejs Visitor. InterfejsVisitor deklaruje metody wizytujce (np. visit_el1), ktre otrzymuj, jakoparametr, obiekt do odwiedzenia, implementujcy interfejs Element. Obiekttypu ConcreteVisitor implementuje metody wizytujce, ktra pozwalaj naprzechowywanie informacji o stanie poszczeglnych obiektw typuConcreteElement. Te odwiedzane obiekty posiadaj metody umoliwiajaceodwiedzenie ich stanu (np. operation_el1), ktre s wywoywane przezmetody wizytujce obiektw typu ConcreteVisitor.
Klient wzorca: Klient reprezentowana przez obiekt typu ObjectStructure musiutworzy obiekty typu ConcreteVisitor i przej przez ca struktur obiektwtypu Element, odwiedzajc kady element, za pomoc obiektu typuConcreteVisitor. Kady obiekt typu Element wywouje metod wizytujc obiektu ConcreteVisitor, dajc dostp do siebie, i pozwala jej wywoaodpowiedni metod swojej klasy, umoliwiajac zbadanie stanu. 62
Charakterystyka wzorca Visitor
Rezultat:
atwe dodawanie nowych dziaa, ktre s zalene odzoonych elementw. Nowa operacja wymaga dodania nowego obiektu typu ConcreteVisitor
Poczenie zwizanych ze sob dziaa w caej strukturze obiektw typu Element w klasie, ktra implementuje interfejsVisitor oraz separacji niepowizanych w podklasach obiektw implementujcych interfejs Visitor
Trudne dodawanie nowych klas ConcreteElement, bo trzebazadeklarowa now metod wizytujc w interfejsie Visitor inowe implementacje metod wizytujcych w klasachConcreteVisitor
Pokrewne wzorce:
Wzorzec Visitor moe suy do odwiedzania obiektw wzorca Kompozyt (Composite)
Odwiedzajcy moe suy do interpretowania we wzorcu Interpreter
63Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
10) Strategia - Strategy
64Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
65Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Problem: Wybr rnych regu biznesowych lub rnychwersji algorytmw w zalenoci od kontekstu
Rozwizanie: Separuje wybr wersji algorytmu od jegoimplementacji
Rezultat:
Zdefiniowanie rodziny algorytmw
Zdefiniowanie interfejsu klasy typu Strategy zawierajcejmetod dostarczajc algorytm i metody w klasie typuContext, ktra korzysta z algorytmu
Eliminacja instrukcji wyboru lub warunkowej do wyborualgorytmu strategii-wprowadzenie mechanizmupolimorfizmu, szczeglnie, gdy wybr algorytmu nie macharakteru przejciowego
66Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Charakterystyka wzorca Strategy
Klient: Decyzj o implementacji obiektu strategii i kontekstu podejmujewaciciel tych obiektw, ktry dostarcza informacji o utworzeniuwaciwego obiektu strategii oraz obiektu kontekstu np. za pomocfabryki obiektw. Jest nim obiekt typu klient wzorca np. dowolny obiekt zwarstwy prezentacji.
Implementacja:
Obiekt kontekstowy klasy bazowej typu Context (Entity) i jejpochodnych, ktry uywa algorytmu, posiada obiekt klasy bazowejtypu Strategy (Entity) lub jej pochodnych, dostarczajcy algorytm.Obiekt kontekstu posiada metod wirtualn wywoujc wirtualnmetod algorytmu obiektu strategii. Kada klasa dziedziczca od klasytypu Strategy implementuje tak metod algorytmu w inny sposb.
Decyzja o sposobie uycia strategii, czyli uycia waciwego obiektutypu Strategy zaley od klasy typu Context
Pokrewne wzorce:
Kandydaci na obiekty wzorca Pyek (Flyweight)
67Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Zofia Kruczkiewicz Inynieria oprogramowania INEK011 68
Wzorce projektowe
3. Dodatek - uzupenienie
1. Identyfikacja wzorcw projektowych2. Przegld wzorcw projektowych
Gang of Four skrt odnoszcy si do autorw ksizki:Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software
2.1. Wzorce kreacyjne2.2. Wzorce strukturalne2.3. Wzorce zachowania
Dodatkowy materia dotyczcy wzorcw kreacyjnych
Wzorzec projektowy Aspekt, ktry moe si zmieni
1)Builder Sposb tworzenia zoonychobiektw
2)Abstract Factory Rodziny obiektw
3)Factory Method Podklasa tworzonego obiektu
4)Prototype Typ klasy tworzonego obiektu
5)Singleton Jedna kopia obiektu
69Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
3) Metoda wytwrcza Factory Method
70Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
71Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
/*** Returns the graphics object used to paint this component.* If DebugGraphics is turned on we create a new* DebugGraphics object if necessary.* Otherwise we just configure the* specified graphics object's foreground and font.** @param g the original Graphics object* @return a Graphics object configured for this component */
protected Graphics getComponentGraphics(Graphics g) {Graphics componentGraphics = g;if (ui != null && DEBUG_GRAPHICS_LOADED) {
if ((DebugGraphics.debugComponentCount() != 0) &&(shouldDebugGraphics() != 0) &&!(g instanceof DebugGraphics)) {
componentGraphics = new DebugGraphics(g, this);}
}componentGraphics.setColor(getForeground());componentGraphics.setFont(getFont());return componentGraphics;
}
Pakiet Swing: Klasa JPanel (ConcreteCreator) dziedziczca po klasie abstrakcyjnej JComponent (Creator) uywa metody wytwrczej getComponentGraphics, i tworzy obiekt typu DebuggGraphics (ConcreteProduct) o interfejsie typu Graphics (Product)
72
73
Charakterystyka wzorca Factory Method
Problem: Obiekt klasy A przetwarzajcej dane innego obiektu lub obiekt klasy B pochodnej klasy A, nie wie, jaki obiekt naley przetwarza z danej rodziny obiektw.
Rozwizanie: Obiekt typu Creator deklaruje metod wytwrcz, ktra deklaruje wytwarzany obiekt typu Product. Dziaanie jest przekazane do obiektu typu ConcreteCreator, ktry wytwarza obiekt typu ConcreteProduct metod wytwrcz, odpowiednio zaimplementowan w klasie ConcreteCreator.
Klient wzorca: klient wybiera odpowiedni obiekt klasy ConcreteCreator z metod wytwrcz odpowiedni do wytworzenia obiektu typu ConcreteProduct. Przetwarzanie obiektu typu ConcreteProdukt polega na tym, e tylko metoda wytwrcza zna reprezentacje obiektu i sposb jego tworzenia, natomiast pozostae metody znaj interfejs abstrakcyjny klasy Product i powinny uywa jedynie te obiekty. 73
Rezultat:
Izolacja regu tworzenia obiektw od regu okrelajcych sposb uywania obiektw w ramach rodziny klas Creator
Okrelenie regu tworzenia obiektw, ktre mog najlepiej realizowa cele aplikacji
Obiekt typu ConcreteCreator powinien suy rwnie do uywania obiektu typu ConcreteProdukt lub jego pochodnego, a jedynie jego metoda wytwrcza powinna zna reguy tworzenia obiektw typu ConcreteProdukt.
Pokrewne wzorce: Fabryka Abstrakcyjna
74Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
4) Prototyp - Prototype
75Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
76Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Przykad klonowania kolekcji obiektw
public class Main {
public static void main(String[] args) {ArrayList kolekcja1, kolekcja2 = new ArrayList();kolekcja2.add(new Integer(1)); kolekcja2.add("B");kolekcja1=(ArrayList)kolekcja2.clone();kolekcja1.add("C");kolekcja2.remove(0);System.out.println(kolekcja1.toString()); //[1, B, C]System.out.println(kolekcja2.toString()); //[B]
}}
77Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
78
Charakterystyka wzorca Prototype
Problem: Oddzielenie w kodzie programu kodu tworzenia obiektw od ich uywania bez budowania hierarchii klas fabryk w sytuacji, gdy potrzebna jest ograniczona liczba obiektw.
Rozwizanie: Obiekt typu Client otrzymuje potrzebny obiekt typu Prototype jako ConcretePrototype na drodze klonowania obiektw
Klient wzorca: Obiekt uywa sklonowane obiekty typu Prototype. Rezultat:
Dodawanie i usuwanie obiektw bez porednictwa obiektw typu fabryki Specyfikowanie nowych obiektw przez zmienianie wartoci lub/i struktury Zredukowanie liczby podklas Dynamiczne adowanie klas typu Prototype
Implementacja:Metoda klasy ArrayList do utworzenia wasnej kopii
public Object clone() {try {
ArrayList v = (ArrayList) super.clone();v.elementData = Arrays.copyOf(elementData, size);v.modCount = 0;return v;
} catch (CloneNotSupportedException e) {throw new InternalError();}
}78
5) Pojedynczy obiekt - Singleton
79Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
80
Charakterystyka wzorca Singleton
Problem: Gwarancja, e klasa ma tylko jeden egzemplarz i istnieje globalny dostp do tego obiektu np. system plikw lub system okien
Rozwizanie: Obiekt typu Singleton sam pilnuje, aby nie powsta inny obiekt tego samego typu
Klient wzorca: Obiekt typu Singleton moe mie wielu klientw Rezultat:
Mniejsza przestrze nazw Kontrolowany dostp do jedynego egzemplarza Moliwe udoskonalanie operacji i reprezentacji, Zmienna liczba egzemplarzy Wiksza elastyczno ni metod klasowych
Implementacja: atrybuty klas typu staticnp. W klasie System atrybut out typu PrintStream reprezentujcy standardowe urzdzenie wyjciowe np. System.out.println(Singleton), gdzie atrybut out w klasie System zdefiniowano:
public static final PrintStream out Pokrewne wzorce: Fabryka Abstrakcyjna, Budowniczy, Prototyp
80Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Dodatkowy materia dotyczcy wzorcw strukturalnych
Wzorce strukturalne Aspekt, ktry moe si zmieni
1)Adapter - klasowy i obiektowy
Interfejs obiektu
2)Bridge - obiektowy Implementacja obiektu
3)Composite - obiektowy Struktura i schemat obiektu
4) Decorator - obiektowy Zadanie obiektu bez zmiany podklas
5) Facade - obiektowy Interfejs posystemu
6) Flyweight - obiektowy Koszt przechowywania obiektw w pamici
7)Proxy - obiektowy Sposb dostepu oraz pooenie obiektu
81
1a) Adapter obiektw (wzorzec obiektowy) Adapter (skadanie obiektw typu Adaptee)
82
1b) Adapter klas (wzorzec klas) adapter jest podklas klasy adaptowanej Adaptee
83Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
84
Charakterystyka wzorca Adapter
Problem: Naley dostosowa interfejs klasy do interfejsu oczekiwanego przez klienta wzorca np. zwizanego ze zmian biblioteki klas obsugujcych grafik
Rozwizanie: Obiekt typu Client uywa obiektw typu Adapterimplementujcych interfejs typu Target i jednoczenie poredniczcych w dostpie do metod obiektw klasy Adaptee.
Klient wzorca: Klient Client wzorca jest niezaleny od zmiannagwkw metod lub ich zmian ich definicji w bibliotekach klas(Adaptee) implementujcych specjalizowane operacje np. operacjegraficzne, poniewa klient uywa zawsze metod porednika typuAdapter, ktre nie zmieniaj nagwka.
84Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Rezultat: Adapter obiektw (skadanie obiektw, folia 1a):
Umoliwia jednemu obiektowi typu Adapter dziaanie z wieloma obiektami typu Adaptee i jej pochodnymi. W obiekcie typu Adapter moe doda now funkcjonalno (zaleta)
W przypadku hierarchii klas typu Adaptee odzwierciedlajc zmian zachowania tego obiektu obiekt Adapter musi odwoywa si do obiektw podklas typu Adaptee, a nie do adaptowanego typu Adaptee
Adapter klas (wielokrotne dziedziczenie): Dostosowanie interfejsu klasy, uywanego w programie do
interfejsu klasy z nowych bibliotek, jednak nie dotyczy to jej podklas (wada)
Umoliwia klasie Adapter przedefiniowanie czci zachowania klasy Adaptee, poniewa jest jego podklas (zaleta)
Wprowadza tylko jeden obiekt typu Adapter udostpniajcy obiekt adaptowany typu Adaptee (wada)
Implementacja: nowa klasa typu Boundry Pokrewne wzorce: Most, Dekorator, Penomocnik
85
4) Dekorator Decorator wzorzec obiektowy
86
87
public void draw() {Component document = new Document();Footnote footnote = new Footnote(document); this.document = new PageNumbering(footnote);this.document.draw();
}
run:DocumentFootNotePage NumberingBUILD SUCCESSFUL (total time: 0 seconds)
Zastosowanie dekoratora do
budowy widoku dokumentu
88Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
89Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
class Component {
public void draw() { }
}//--------------------------------------------------------------------------------------------
class Document extends Component {
public void draw() {
System.out.println("Document"); }
}//--------------------------------------------------------------------------------------------
class DecoratorDocument
extends Component
{ Component component;
public void draw() {
component.draw(); }
}//--------------------------------------------------------------------------------------------
class FootNote
extends DecoratorDocument
{ public FootNote(Component k)
{ component = k; }
public void draw() {
super.draw();
System.out.println(" FootNote "); }
}
class PageNumbering extends DecoratorDocument
{ public PageNumbering(Component k)
{ component = k; }
public void draw() {
super.draw();
System.out.println("PageNumbering "); }
}//--------------------------------------------------------------------------------------------
public class Main {
Component document;
public void draw() {
Component document = new Document();
FootNote footnote = new FootNote(document);
this.document = new PageNumbering(footnote);
this.document.draw();
}
public static void main(String a[]) {
Main main = new Main();
main.draw(); }
}
90
Zastosowanie dekoratora do budowy widoku dokumentu (diagram obiektw)
91Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
92
Charakterystyka wzorca Decorator
Problem: Naley dynamicznie rozwija funkcjonalno obiektu jako alternatywa dla tworzenia hierarchii klas.
Rozwizanie: Obiekt typu Component jest klas abstrakcyjn (interfejsem) dla obiektw wizualnych. Jej interfejs definiuje operacje rysowania i obsugi zdarze implementowane przez klas ConcreteComponent. Abstrakcyjna klasa (interfejs) typu Decorator dziedziczy operacje wizualne od interfejsu Component i definiuje dodatkowe operacje graficzne realizowane przez klas ConcreteDecorator.
Klient wzorca: Dokument zrealizowany z komponentw wizualnych bezdekoratorw i z dekoratorami
Rezultat: dynamiczne i przezroczyste dodawanie dodatkowych komponentw wizualnych
do podstawowych komponentw wizualnych atwe usuwanie dodatkowych funkcjonalnoci (bardziej elastyczne ni przy
dziedziczeniu) Zastpienie dekoratorami dodawanymi dynamicznie do klas rozbudowanej
hierarchii klas zawierajcych na stae rwnowane funkcjonalnoci Implementacja: nowa klasa typu Boundry, biblioteka komponentw typu Swing,
biblioteka komponentw typu Java Server Faces Pokrewne wzorce: Adapter (jednak zmiana zobowiza obiektu), Kompozyt,
Strategia (jednak zmiana struktury obiektu)
92Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
7) Penomocnik - Proxy wzorzec obiektowy
93Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Przykad zastosowania wzorca Proxy
94Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
95
96
Charakterystyka wzorca Proxy
Problem: reprezentuje inny obiekt w celu sterowania dostpem do niego Rozwizanie: Obiekt typu Proxy przechowuje referencj do prawdziwego obiektu
typu RealObject i moe by zastpiony przez obiekt typu RealObject, poniewa maj taki sam interfejs (dziedzicz od klasy typu Subject) oraz moe kontrolowa dostp do obiektu typu RealObject. Obiekt typu Proxy moe by zdalnym obiektem odwoujcym si do obiektu typu RealObject, wirtualnym obiektem buforujcym dostp do obiektu typu RealObject, obiektem zabezpieczajcym przed dostpem nie powoanym do obiektu typu RealObject
Klient wzorca: Dowolny obiekt z dowolnej warstwy wielowarstwowego programu Rezultat:
Zdalny Proxy moe ukrywa obiekty typu RealObject w dowolnej przestrzeni adresowej
Wirtualny Proxy poprawia wydajno za pomoc buforowania danych obiektu typu RealObject i ogranicza niepotrzebne operacje na tym obiekcie np. modyfikacje, zapisy do pliku
Zabezpieczajcy Proxy autoryzuje dostp do obiektw typu RealObject Pokrewne wzorce: Adapter (jedna podzbir interfejsu przedmiotu), Dekorator
(jednak sterowanie dostpem do obiektu)96
Dodatkowy materia dotyczcy wzorcwzachowania
Wzorce czynnociowe Aspekt, ktry moe si zmieni
1)Chain of Responsibility Obiekt, ktry moe zrealizowa danie
2)Command Warunki i sposb realizacji dania
3)Interpreter Gramatyka i reprezentacja jzyka
4)Iterator Sposb dostpu i przechodzenia elementw kolekcji
5)Mediator Jak i ktre obiekty oddziauj na siebie?
6)Memento Jakie prywatne informacje s przechowywane poza obiektem i kiedy?
7)Observer Liczba obiektw zalecych od innego obiektu; jak zalene obiekty utrzymuj aktualny stan
8)State Stany obiektw
9)Visitor Operacje, ktre mona zastosowa do obiektu (obiektw) bez zmiany jego klasy (ich klas)
10)Strategy Algorytm
11)Template Method Kroki algorytmu 97
2) Polecenie - Command
Element of menu
Document
98Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
99Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Problem: Naley polecenia tworzy w formie obiektu, co pozwalasparametryzowa rne wymagania klientw i ewidencji polece
Rozwizanie: interfejs Command deklaruje wykonywane operacje. Obiekt typuConcreteCommand okrela zwizek midzy akcj (obiekt typu Invoker) orazobiektem odbiorc typu Receiver, i wdraa metody wykonywane przez wywoaniemetod obiektu Receiver. Obiekt typu Invoker za porednictwem obiektu typu ConcreteCommand wywouje metod obiektu typu Receiver, ktry wie, jakwykona akcj.
Klient wzorca : Klient tworzy obiekt typu ConcreteCommand i ustala jego obiekt typu Receiver, ktre wykonuj akcje oraz ustala obiekt zainteresowany akcj, takijak obiekt Invoker.
Rezultat: Separacja obiektw, ktre wywouja akcj od tych, ktre realizuj akcje. Moliwo tworzenia zoonych obiektw typu ConcreteCommand atwo wstawiania nowych klas pochodnych typu Command
Pokrewne wzorce: Kompozyt (Composite) do utworzenia zoonych polece Memento do anulowania skutkw polecenia Dziaa jak Prototype, jeli musi by skopiowany przed umieszczeniem na licie
polece 100
Charakterystyka wzorca Command
3) Interpreter - Interpreter
101Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Przykad zastosowania wzorca Interpreter (1)
102
Dane s:
TerminalExpression = {-6, -2, 1, 5, x, y},
NonterminalExpression = {S, A, AN, B, N},
oraz produkcje w notacji BNF:
::=
::= |
::= x | y
::= 1 | -2
::= 5 | -6
((1+x)+(-6+y))
S
AN
x 1
AN
N B A N
-6 y
+
+ +
103
Przykad zastosowania wzorca Interpreter (2)
Zofia Kruczkiewicz Inynieria oprogramowania INEK011
Problem: Definicja reprezentacji dla gramatyki zadanego jzyka oraz interpretera zda napisanych w danym jzyku definiowanym przez gramatyk
Rozwizanie: Obiekt typu Context zawiera globalne informacje dla interpretera. Obiekt typu Client buduje lub dostaje drzewo skadni abstrakcyjnej reprezentujce zdanie danego jzyka oraz wywouje operacj interpret drzewo skada si z obiektw klas TerminalExpression i NonterminalExpression implementujcych interfejs AbstractExpression.
104Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Charakterystyka wzorca Interpreter
Klient wzorca: Buduje lub dostaje drzewo skadni oraz uruchamia proces interpretacji zdania reprezentowanego przez drzewo
Rezultat: atwa modyfikacja gramatyki atwa implementacja gramatyki Trudna obsuga zoonej gramatyki kada klasa reprezentuje co
najmniej jedn regu produkcji Dodawanie nowych sposobw interpretowania wyrae przez
modyfikacje klas
Pokrewne wzorce: Interpreter jest przykadem zastosowania Kompozytu (Composite), Zastosowanie wzorca Pyek (Flyweight) jako symboli kocowych Iterator zastosowany do przechodzenia struktury Visitor w kadym wle drzewa moe realizowa dziaania wzorca
Interpreter
105Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
4) Iterator - Iterator
106Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
107Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Problem: Sekwencyjny, wielokrotny i jednakowy dostp do elementw obiektu zagregowanego bez podawania struktury wewntrznej tego obiektu
Rozwizanie: Interfejs Iterator definiuje dostp do elementw agregatw i sposb przejcia przez agregat, obiekt typu ConcreteIterator implementuje Iterator. Interfejs Aggregatereprezentuje obiekt, przez ktry przechodzi Iterator. Istnieje powizanie jedynie midzy obiektami typu ConcreteAggregate i ConcreteIterator.
Klient wzorca: klient wzorca moe ledzi, ktry obiekt w agregacie jest biecy i potrafi wskaza nastpny lub poprzedni obiekt w tym agregacie
108
Charakterystyka wzorca Iterator
Rezultat: Moliwo dowolnego przejcia przez agregat Interfejs iteratora upraszcza interfejs agregatu W danej chwili moe odbywa si wiele przej przez
agregat za pomoc iteratora
Implementacja: nowa klasy typu Control np. klasy Iterator oraz ListIterator w pakiecie java.util
Pokrewne wzorce Kompozyt (Composite) Metody wytwrcze (Factory Method) tworz
egzemplarze podklas klasy Iterator Pamitka (Memento) do przechowania stanu Iteratora
109Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
6) Pamitka - Memento
110Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
111Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Problem: Bez naruszania hermetyzacji naley zapamita i udostpni stan obiektu, aby przywrci jego stan w przyszoci.
Rozwizanie: Obiekt typu Caretaker jest odpowiedzialny za kierowanie obiektamitypu Originator - moe da polecenie obiektom typu Originator, ktych stan powinien by zachowany, aby utworzyy swj obiekt typu Memento i go przekazay. Obiekt Memento posiada stan obiektu wytwrcy (typu Originator). Obiekt typu Caretaker przechowuje wszystkie obiekty typu Memento i moe da da polecenieobiektom typu Originator, aby przywrciy swj stan przekazujc im ich obiekttypu Memento.
Rezultat:
Utrzymanie hermetyzacji obiektw typu Originator, mimo przechowywania stanu tego obiektu poza nim
Uproszczenie obiektu typu Caretaker
Zmniejszenie wydajnoci
Trudnoci w realizacji
Trudnoci w utrzymaniu obiektw Memento
Pokrewne wzorce:
Wzorce Polecenie (Command) i Iterator mog uywa wzorca Memento do zapamitania stanu 112
Charakterystyka wzorca Memento
8) Stan - State
State
TCP
TCP
Connection
TCP
Accept
TCP
Close
113Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
114Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Problem: Mona zmieni zachowanie obiektu podczas zmiany wewntrznegostanu obiektu, tworzc jego pochodny obiekt.
Rozwizanie: Obiekt typu Context definiuje interfejs dla klientw i utrzymujeobiekt typu ConcreteState, definiujcy biecy stan. Definicja interfejsu Statesuy do zachowania stanu obiektu typu Context. Obiekty typu ConcreteStatestanowi zachowanie jednego z moliwych stanw obiektu typu Context.
Klient wzorca: obiekt, ktry konfiguruje obiekty ConcreteState za pomocobiektu Context
Rezultat:
Lokalizacja informacji zwiazanej z kadym ze stanw obiektw tyou Contextw jednym obiekcie typu ConcreteState
Kady obiekt pochodny typu ConcreteState wprowadza nowfunkcjonalno niezaleznie, co poprawia widoczno przejcia pomidzystanami
Moliwo wspodzielenia takich obiektw jak ConcreteState, poniewa ichstany s reprezentowane przez ich rodzaje (podobnie jak wzorzec Flyweight).
Pokrewne wzorce:
Wzorzec Pyek (Flyweight) - wspdzielenie obiektw Stan (State)
Obiekty Stan s czsto reprezentowane przez wzorzec Singleton 115
Charakterystyka wzorca State
11) Metoda szablonowa Template Method
116Zofia Kruczkiewicz Inynieria
oprogramowania INEK011
Problem: Naley okreli szkielet algorytmu, a szczegyalgorytmu powierzy klasom pochodnym
Rozwizanie: Klasa AbstractClass definiuje abstrakcyjny algorytm, ale pewne czci abstrakcyjnego algorytmu s uzupeniane przezrne definicje, realizowane przez metody klasy ConcreteClass
Wynik: "zasada Hollywood " (nie zadzwo do nas, my zadzwonimy do Ciebie), gdzie metoda klasy bazowej wywoujemetody z klas pochodnych
Realizacja: tworzenie bibliotek, co daje podstaw do wsplnychzachowa w klasach biblioteki
Pokrewne wzorce:
Metody szablonowe (Template Method) wywouj metody wytwrcze (Factory Method)
Metody szablonowe (Template Method) su do zmiany czci algorytmu we wzorcach Strategia (Strategy)
117