wzorce projektowe. rusz głową! cała książka.pdf

(87483 KB) Pobierz
890643122.122.png
Spis treści (skrócony)
Wprowadzenie
21
1. Witamy w krainie wzorców projektowych: wprowadzenie
33
2. Jak sprawić, by Twoje obiekty
były zawsze dobrze poinformowane: Wzorzec Obserwator
67
3. Dekorowanie zachowania obiektów: Wzorzec Dekorator
109
4. Pizzeria zorientowana obiektowo: Wzorzec Fabryka
139
5. Obiekty jedyne w swoim rodzaju: Wzorzec Singleton
197
6. Hermetyzacja wywołań: Wzorzec Polecenie
217
7. Zdolność do adaptacji: Wzorce Adapter oraz Fasada
259
8. Hermetyzacja algorytmów: Wzorzec Metoda Szablonowa
297
9. Zarządzanie kolekcjami: Wzorce Iterator i Kompozyt
335
10. Stan obiektu: Wzorzec Stan
403
11. Kontrola dostępu do obiektu: Wzorzec Proxy
447
12. Łączenie wzorców: Wzorce złożone
517
13. Wzorce projektowe w praktyce: Nowe życie z wzorcami
595
14. Dodatek: inne wzorce
629
Skorowidz
649
Spis treści (na serio)
Wprowadzenie
Twój mózg jest skoncentrowany na wzorcach projektowych.
W tym rozdziale Ty starasz się czegoś dowiedzieć, a Twój mózg robi Ci przysługę i nie przykłada się
do zapamiętywania zdobywanej wiedzy. Twój mózg myśli sobie: „Lepiej zostawię miejsce w pamięci
na bardziej istotne informacje, na przykład: jakich dzikich zwierząt należy unikać bądź czy jeżdżenie nago
na snowboardzie jest dobrym pomysłem”. A zatem, w jaki sposób możesz przekonać swój mózg, że Twoje
życie zależy od poznania wzorców projektowych?
Dla kogo przeznaczona jest ta książka?
22
Wiemy także, co sobie myśli Twój mózg
23
Metapoznanie
25
Zmuś swój mózg do posłuszeństwa
27
Zespół recenzentów technicznych
30
Podziękowania
31
6
890643122.133.png
Wprowadzenie do wzorców projektowych
1 Witamy w krainie wzorców projektowych
Ktoś rozwiązał już Twoje problemy. W tym rozdziale dowiesz się, dlaczego (i w jaki
sposób) możesz wykorzystać wiedzę i doświadczenia zdobyte przez innych projektantów i programistów,
którzy podczas pracy nad różnymi projektami zmuszeni byli wstąpić na pełną zdradliwych pułapek ścieżkę
i — co najważniejsze — udało im się przeżyć taką wyprawę. Zanim dobrniemy do końca rozdziału, rzucimy
okiem na sposoby wykorzystywania wzorców projektowych i przedstawimy ich zalety, poznamy kilka
podstawowych zasad projektowania zorientowanego obiektowo, a także omówimy sposób działania
przykładowego wzorca. Najlepszą metodą zastosowania wzorca jest załadowanie go bezpośrednio
do Twojego mózgu , a następnie zlokalizowanie obszarów w obrębie projektowanych rozwiązań oraz
istniejących aplikacji, w których możesz je zastosować . Pracując z wzorcami projektowymi, zamiast
wielokrotnego wykorzystywania tych samych fragmentów kodu, wielokrotnie wykorzystujesz swoje
doświadczenia .
Prosta aplikacja o nazwie SymulatorKaczki
34
Jacek rozmyśla o dziedziczeniu…
37
Pamiętaj,
opanowanie takich
zagadnień, jak
abstrakcyjność, dziedziczenie
i polimorfizm, nie zrobi jeszcze
z Ciebie dobrego projektanta
systemów zorientowanych
obiektowo. Prawdziwy guru zawsze
myśli o stworzeniu elastycznego
projektu, który będzie łatwy
do serwisowania i będzie
sobie w stanie poradzić ze
zmieniającymi się
warunkami.
A może by tak interfejs?
38
Jedyny pewny element w procesie tworzenia oprogramowania
40
Oddzielanie tego, co się zmienia, od tego, co pozostaje niezmienione
42
Projektowanie zachowania Kaczki
43
Testowanie kodu klasy Kaczka
50
Dynamiczne ustawianie zachowania
52
Wielki diagram „ukrytych” zachowań
54
Relacja MA może być lepsza niż JEST
55
Rozmawiając o wzorcach projektowania
56
Potęga wspólnego słownika wzorców
60
W jaki sposób mogę wykorzystywać wzorce projektowe?
61
Twoja skrzynka narzędziowa
64
Rozwiązania ćwiczeń
66
Object
that holds
state
OBSERWATOR
8
int
8
8
8
8
Observers
Automatic update/notification
7
890643122.144.png 890643122.155.png 890643122.001.png 890643122.012.png 890643122.023.png 890643122.034.png 890643122.045.png 890643122.055.png 890643122.066.png 890643122.077.png 890643122.080.png 890643122.081.png 890643122.082.png 890643122.083.png 890643122.084.png 890643122.085.png 890643122.086.png 890643122.087.png 890643122.088.png 890643122.089.png 890643122.090.png 890643122.091.png 890643122.092.png 890643122.093.png 890643122.094.png 890643122.095.png 890643122.096.png 890643122.097.png 890643122.098.png 890643122.099.png 890643122.100.png 890643122.101.png 890643122.102.png 890643122.103.png 890643122.104.png 890643122.105.png 890643122.106.png 890643122.107.png 890643122.108.png 890643122.109.png 890643122.110.png 890643122.111.png 890643122.112.png 890643122.113.png 890643122.114.png 890643122.115.png 890643122.116.png 890643122.117.png 890643122.118.png 890643122.119.png 890643122.120.png 890643122.121.png 890643122.123.png 890643122.124.png 890643122.125.png 890643122.126.png 890643122.127.png 890643122.128.png 890643122.129.png 890643122.130.png 890643122.131.png 890643122.132.png 890643122.134.png 890643122.135.png 890643122.136.png 890643122.137.png 890643122.138.png 890643122.139.png 890643122.140.png 890643122.141.png 890643122.142.png 890643122.143.png 890643122.145.png 890643122.146.png 890643122.147.png 890643122.148.png 890643122.149.png 890643122.150.png 890643122.151.png 890643122.152.png 890643122.153.png 890643122.154.png 890643122.156.png 890643122.157.png 890643122.158.png 890643122.159.png 890643122.160.png 890643122.161.png 890643122.162.png 890643122.163.png 890643122.164.png 890643122.165.png 890643122.002.png 890643122.003.png 890643122.004.png 890643122.005.png 890643122.006.png 890643122.007.png 890643122.008.png 890643122.009.png 890643122.010.png 890643122.011.png 890643122.013.png 890643122.014.png 890643122.015.png 890643122.016.png 890643122.017.png 890643122.018.png 890643122.019.png 890643122.020.png 890643122.021.png 890643122.022.png 890643122.024.png 890643122.025.png 890643122.026.png 890643122.027.png 890643122.028.png 890643122.029.png 890643122.030.png 890643122.031.png 890643122.032.png 890643122.033.png 890643122.035.png 890643122.036.png 890643122.037.png 890643122.038.png 890643122.039.png 890643122.040.png 890643122.041.png 890643122.042.png 890643122.043.png 890643122.044.png 890643122.046.png 890643122.047.png 890643122.048.png 890643122.049.png 890643122.050.png 890643122.051.png 890643122.052.png
 
Wzorzec Obserwator
2 Jak sprawić, by Twoje obiekty były
zawsze dobrze poinformowane
Nie przegap okazji, kiedy dzieje się coś naprawdę ciekawego!
Przedstawimy Ci wzorzec, który potrafi poinformować inne obiekty o tym, że wydarzyło się coś, czym
powinny się zająć. Co ciekawe, obiekty mogą nawet samodzielnie decydować w czasie działania programu
o tym, czy chcą być informowane o takich wydarzeniach. Wzorzec Obserwator jest jednym z najczęściej
wykorzystywanych wzorców w pakiecie JDK (ang. Java Development Kit ), a co najważniejsze — jest wręcz
niewiarygodnie użyteczny. W niniejszym rozdziale rzucimy również okiem na relacje typu jeden-do-wielu
oraz tzw. luźne związki (tak, to prawda, napisaliśmy „luźne związki”). Korzystając z wzorca Obserwator,
z pewnością odmienisz swoje życie.
Aplikacja sprawdzająca warunki pogodowe
69
Spotkanie z wzorcem Obserwator
74
Wydawca + Prenumerator = wzorzec Obserwator
75
Pięciominutowe przedstawienie — obserwowany kontra obserwujący
78
Definicja wzorca Obserwator
81
Siła luźnych zależności
83
Projektowanie stacji meteorologicznej
86
Implementacja stacji meteorologicznej
87
Java — zastosowanie wbudowanego wzorca Obserwator
94
Ciemna strona klasy java.util.Observable
101
Twoja skrzynka narzędziowa
104
Rozwiązania ćwiczeń
107
RELACJA JEDEN-DO-WIELU
Obiekt, którego stan
jest obserwowany
8
8
8
8
8
int
K
K
Automatyczna aktualizacja
(powiadamianie)
Obiekty obserwujące
(Observers)
8
890643122.053.png 890643122.054.png 890643122.056.png 890643122.057.png 890643122.058.png 890643122.059.png 890643122.060.png 890643122.061.png 890643122.062.png 890643122.063.png 890643122.064.png 890643122.065.png 890643122.067.png 890643122.068.png 890643122.069.png 890643122.070.png 890643122.071.png 890643122.072.png 890643122.073.png 890643122.074.png 890643122.075.png 890643122.076.png
Wzorzec Dekorator
3 Dekorowanie zachowania obiektów
W zasadzie niniejszy rozdział możemy równie dobrze zatytułować
„Otwieranie oczu programistom z nadmiernymi skłonnościami
do nadużywania dziedziczenia”. W tym rozdziale spróbujemy krytycznie przyjrzeć się
zwyczajowym skłonnościom do nadużywania mechanizmu dziedziczenia oraz nauczymy Cię sposobów
dekorowania zachowania klas w czasie działania programu przy użyciu pewnej formy kompozycji
obiektów. Dlaczego? Po zapoznaniu się z technikami dekoracji zachowania klas będziesz mógł wyposażać
swoje (i nie tylko) obiekty w nowe możliwości bez konieczności dokonywania jakichkolwiek modyfikacji
w kodzie klas podstawowych.
Witamy w „Star Café”
110
Reguła otwarte-zamknięte
116
Spotkanie z wzorcem Dekorator
118
Konstruowanie zamówienia przy użyciu Dekoratorów
119
Definicja wzorca Dekorator
121
Dekorujemy nasze Napoje
122
Tworzymy kod aplikacji „Star Café”
125
Dekoratory w świecie rzeczywistym:
obsługa wejścia-wyjścia w języku Java
130
Tworzenie własnych dekoratorów obsługi wejścia-wyjścia
132
Zawsze sądziłem,
że prawdziwi mężczyźni tworzą
podklasy dla wszystkiego, co się tylko
do tego nadaje. Tak było do czasu,
gdy dowiedziałem się o korzyściach,
jakie daje możliwość rozszerzania
możliwości aplikacji na poziomie
działania, a nie kompilacji. A teraz
— spójrzcie tylko na mnie!
Twoja skrzynka narzędziowa
135
Rozwiązania ćwiczeń
136
9
890643122.078.png 890643122.079.png
Zgłoś jeśli naruszono regulamin