diagramy maszyn stanowych, wzorce...

of 117 /117
Diagramy maszyn stanowych, wzorce projektowe Wykład 5– część 2 Zofia Kruczkiewicz 1 Zofia Kruczkiewicz – Inżynieria oprogramowania INEK011

Author: dinhnguyet

Post on 01-Mar-2019

212 views

Category:

Documents


0 download

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