Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

1 Projektowanie obiektowe Wzorce projektowe Gang of Four Memento i Wzorce rozszerzeń

Podobne prezentacje


Prezentacja na temat: "1 Projektowanie obiektowe Wzorce projektowe Gang of Four Memento i Wzorce rozszerzeń"— Zapis prezentacji:

1 1 Projektowanie obiektowe Wzorce projektowe Gang of Four Memento i Wzorce rozszerzeń

2 2 Roadmap Decorator Iterator Visitor

3 3 Wzorce rozszerzeń Mają na celu uczynić proces rozszerzania kodu bardziej czytelnym, prostym i dostępnym

4 4 Zasada podstawienia (LSP) Barbary Liskov Instancja klasy powinna funkcjonować jako instancja jej klasy nadrzędnej. np.: Wyrażenie pi = new Liczba( ); Elipsa o = new Okrag(6);

5 5 Decorator GoF - wzorzec strukturalny Umożliwia programistom dynamiczne tworzenie zachowania obiektów.

6 6 Decorator – problem Potrzebujemy rozszerzyć zachowanie klasy, ale istnieją powody, dla których nie chcemy korzystać z dziedziczenia. Potrzebujemy dodać zachowanie lub stan do wybranych obiektów w czasie-wykonania, a dziedziczenie jest nieodpowiednie z powodu statyczności i faktu, że dotyczy całej klasy.

7 7 Decorator – rozwiązanie Stosujemy rekursywną kompozycję. Agregacja 1 do 1: składa się w górę hierarchii dziedziczenia. Wprowadzamy pojedynczy rdzeniowy obiekt osłonięty przez możliwie wiele opcjonalnych obiektów.

8 8 Decorator – diagram klas

9 9 Decorator – przykład

10 10 Decorator – konsekwencje Dostarcza większą elastyczność niż dziedziczenie. Wykorzystując różne kombinacje osłon, tworzy się wiele różnych kombinacji zachowań. Mniejsza liczba klas, kosztem większej liczby obiektów. Elastyczność osłon zwiększa ryzyko błędów. Trudno jest ustalić tożsamość obiektu, bo właściwe obiekty są za osłonami.

11 11 Zależności między wzorcami Dostarczany interfejs jest: inny – adapter, ten sam – proxy, rozszerzony – decorator. Decorator i proxy mają inne zastosowanie, ale podobne struktury (warstwa pośrednicząca). Decorator pozwala zmienić skórę obiektu, a strategy bebechy.

12 12 Zależności między wzorcami Composite i decorator za pomocą rekursywnej kompozycji organizują dowolną liczbę obiektów. Decorator może być postrzegany jako zdegenerowany composite, z jednym komponentem, ale jego celem nie jest agregacja. Decorator i composite są używane razem, bo się uzupełniają.

13 13 Iterator GoF - wzorzec behawioralny Udostępnia sposób sekwencyjnego dostępu do elementów kolekcji

14 14 Iterator – problem Potrzebujemy ujednolicić mechanizm przechodzenia (przeglądania) wysoce rożnych struktur danych, tak aby można było zdefiniować algorytmy zdolne do przezroczystego wzajemnego oddziaływania z każdą z nich.

15 15 Iterator – rozwiązanie Stosujemy polimorfizm do przemierzania (iterowania). Przemierzanie kolekcji awansuje do statusu pełnego objektu.

16 16 Iterator – diagram klas

17 17 Iterator – przykład

18 18 Iterator – konsekwencje Jest możliwy dostęp do kolekcji obiektów bez znajomości źródła obiektów. Używając wielu obiektów iteratorów, jest łatwo posiadać i zarządzać wieloma przemierzeniami naraz. Klasa kolekcji może dostarczać różne rodzaje iteratorów by przemierzać kolekcje w różny sposób. (np. klucze i wartości indeksów)

19 19 Zależności między wzorcami Polimorficzne iteratory polegają na wzorcu factory method do utworzenia odpowiedniej podklasy iteratora. Memento używany jest często w połączeniu z iteratorem. Iterator używa memento by uchwycić stan iteracji. Iterator przechowuje memento wewnętrznie.

20 20 Visitor GoF - wzorzec behawioralny. Umożliwia programistom zdefiniowanie nowej operacji dla hierarchii bez konieczności zmiany klas zawartych w tej hierarchii.

21 21 Visitor – problem Wiele różnych i niezwiązanych operacji trzeba przeprowadzić na obiektach węzłowych w heterogenicznej złożonej strukturze, ale: Chcemy uniknąć zanieczyszczania klas węzłowych w te operacje. Nie chcemy wykonywać sprawdzenia typu każdego węzła i rzutować wskaźnik do właściwego typu przed wykonaniem pożądanej operacji.

22 22 Visitor – rozwiązanie Podwójne rozdzielenie (double dispatch). Wybór wykonywanej operacji należy uzależnić od typu dwóch obiektów. Implementacja mechanizmu umożliwiającego dodawanie operacji do istniejącej hierarchii.

23 23 Visitor – diagram klas (double dispatch)

24 24 Visitor – diagram klas

25 25 Visitor – diagram klas realizacja z nawigacją

26 26 Visitor – przykład

27 27 Visitor – konsekwencje Ułatwia dodawanie nowych operacji on strukturze obiektów. Konkretne instancje klas struktury nie mają zależności z klasami visitora. Logika nowej operacji jest umieszczona w jednej spójnej klasie tzn. konkretnej implementacji visitora. Jedne obiekt visitora przechowuje stan potrzebny do wykonania operacji na strukturze obiektów. Dodanie nowej konkretnej klasy do struktury obiektów wymaga rozbudowy każdego istniejącego visitora. Klasy struktury muszą udostępnić visitorowi odpowiedni dostęp do ich stanu do przeprowadzenia operacji.

28 28 Zależności między wzorcami Drzewo składni interpretera to composite, więc: iterator może przemierzać composite, visitor może wykonywać operację na composite. Visitor jest silniejszy niż command ponieważ może uruchamiać odpowiednią operacją dla napotkanego rodzaju obiektu.

29 29 Podobieństwo strukturalne wzorców wrapper, delegacja, agregacja

30 30 Podobieństwo strukturalne wzorców hierarchia dziedziczenia

31 31 Podobieństwo strukturalne wzorców osłona hierarchii dziedziczenia

32 32 Podobieństwo strukturalne wzorców rekursywna kompozycja

33 33 Podobieństwo strukturalne wzorców status pełnoprawnego obiektu


Pobierz ppt "1 Projektowanie obiektowe Wzorce projektowe Gang of Four Memento i Wzorce rozszerzeń"

Podobne prezentacje


Reklamy Google