Wzorce projektowe / Eric Freeman [et al.]. – Gliwice, cop. 2011 Spis

Transkrypt

Wzorce projektowe / Eric Freeman [et al.]. – Gliwice, cop. 2011 Spis
Wzorce projektowe / Eric Freeman [et al.]. – Gliwice, cop. 2011
Spis treści
Wprowadzenie
Dla kogo przeznaczona jest ta ksiąŜka?
Wiemy takŜe, co sobie myśli Twój mózg
Metapoznanie
Zmuś swój mózg do posłuszeństwa
Zespół recenzentów technicznych
Podziękowania
22
23
25
27
30
31
1. Witamy w krainie wzorców projektowych
Prosta aplikacja o nazwie Symulator Kaczki
Jacek rozmyśla o dziedziczeniu...
A moŜe by tak interfejs?
Jedyny pewny element w procesie tworzenia oprogramowania
Oddzielanie tego, co się zmienia, od tego, co pozostaje niezmienione
Projektowanie zachowania Kaczki
Testowanie kodu klasy Kaczka
Dynamiczne ustawianie zachowania
Wielki diagram "ukrytych" zachowań
Relacja MA moŜe być lepsza niŜ JEST
Rozmawiając o wzorcach projektowania
Potęga wspólnego słownika wzorców
W jaki sposób mogę wykorzystywać wzorce projektowe?
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
34
37
38
40
42
43
50
52
54
55
56
60
61
64
66
2. Jak sprawić, by Twoje obiekty były zawsze dobrze poinformowane
Aplikacja sprawdzająca warunki pogodowe
Spotkanie z wzorcem Obserwator
Wydawca + Prenumerator = wzorzec Obserwator
Pięciominutowe przedstawienie - obserwowany kontra obserwujący
Definicja wzorca Obserwator
Siła luźnych zaleŜności
Projektowanie stacji meteorologicznej
Implementacja stacji meteorologicznej
Java - zastosowanie wbudowanego wzorca Obserwator
Ciemna strona klasy java.util.Observable
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
69
74
75
78
81
83
86
87
94
101
104
107
3. Dekorowanie zachowania obiektów
Witamy w "Star Cafe"
Reguła otwarte-zamknięte
Spotkanie z wzorcem Dekorator
Konstruowanie zamówienia przy uŜyciu Dekoratorów
110
116
118
119
Definicja wzorca Dekorator
Dekorujemy nasze Napoje
Tworzymy kod aplikacji "Star Cafe"
Dekoratory w świecie rzeczywistym: obsługa wejścia-wyjścia w języku Java
Tworzenie własnych dekoratorów obsługi wejścia-wyjścia
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
121
122
125
130
132
135
136
4. Pizzeria zorientowana obiektowo
Kiedy widzisz "nowy" obiekt, myśl o nim jako o "konkretnym"
Pizza w Obiektowie
Hermetyzacja procesu tworzenia obiektów
Budujemy prostą fabrykę pizzy
Tworzymy definicję "wzorca" Simple Factory
Nowa struktura Pizzerii
Zezwalamy klasom podrzędnym na podejmowanie decyzji
Tworzymy Pizzerię
Deklarowanie metody typu Fabryka
Spotkanie z wzorcem Metoda Fabrykująca
Równoległa hierarchia klas
Definicja wzorca Metoda Fabrykująca
Pizzeria mocno uzaleŜniona
Sprawdzamy zaleŜności pomiędzy obiektami
Zastosowanie reguły DIP
A w międzyczasie, na zapleczu Pizzerii...
Rodziny składników...
Budujemy fabryki składników pizzy
Fabryka Abstrakcyjna
Za kulisami
Definicja wzorca Fabryka Abstrakcyjna
Porównanie Metody Fabrykującej oraz Fabryki Abstrakcyjnej
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
140
142
144
145
147
150
151
153
155
161
162
164
167
168
170
174
175
176
183
184
186
190
192
193
5. Obiekty jedyne w swoim rodzaju
Jeden i tylko jeden
Mały Singleton
Analiza klasycznej implementacji wzorca Singleton
Wyznania obiektu Singleton
Fabryka czekolady
Definicja wzorca Singleton
Ups, mamy problem...
Zostań wirtualną maszyną Java
Jak sobie radzić z wielowątkowością?
Wzorzec Singleton - pytania i odpowiedzi
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
198
199
201
202
203
205
206
207
208
212
214
216
6. Hermetyzacja wywołań
Automatyka w domu i zagrodzie
Mamy nową zabawkę! Sprawdzamy, jak działa SuperPilot...
Co zawiera otrzymany dysk CD-R?
A w międzyczasie w naszym barze szybkiej obsługi...
Przyjrzyjmy się nieco dokładniej wzajemnym interakcjom...
Zadania i zakresy odpowiedzialności
Od Baru do wzorca Polecenie
Nasze pierwsze POLECENIE
Definicja wzorca Polecenie
Wzorzec Command i SuperPilot
Implementujemy SuperPilota
Sprawdzamy moŜliwości naszego SuperPilota
Nadszedł wreszcie czas, aby utworzyć trochę dokumentacji...
Implementacja mechanizmu wycofywania przy uŜyciu stanów
KaŜdy pilot powinien posiadać tryb Impreza!
Zastosowanie makropoleceń
Kolejne zastosowania wzorca Polecenie - kolejkowanie Ŝądań
Kolejne zastosowania wzorca Polecenie - Ŝądania rejestracji
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
218
219
220
223
224
225
227
229
232
234
236
238
241
246
250
251
254
255
256
258
7. Zdolność do adaptacji
Adaptery są wśród nas
Adaptery zorientowane obiektowo
Wzorzec Adapter bez tajemnic
Definicja wzorca Adapter
Adaptery obiektów i klas
Temat dzisiejszej wieczornej pogawędki: Adapter obiektów i Adapter klas
Adaptery w świecie rzeczywistym
Adaptujemy interfejs Enumeration do wymagań interfejsu Iterator
Temat dzisiejszej wieczornej pogawędki: wzorce Dekorator i Adapter
Nie ma to jak kino domowe
Światła, kamera, fasada!
Konstruujemy fasadę naszego systemu kina domowego
Definicja wzorca Fasada
Reguła ograniczania interakcji
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
260
261
265
267
268
271
272
273
276
279
282
285
288
289
294
296
8. Hermetyzacja algorytmów
Tworzymy klasy reprezentujące kawę i herbatę w języku Java
Kawa i herbata, czyli klasy abstrakcyjne
Ciągniemy nasz projekt o krok dalej...
Wydobywanie metody receptura Parzenia
Czego juŜ dokonaliśmy?
Spotkanie z wzorcem Metoda Szablonowa
Zróbmy sobie herbatę...
299
302
303
304
307
308
309
Co nam daje zastosowanie metody szablonowej?
Definicja wzorca Metoda Szablonowa
Bliskie spotkania z kodem aplikacji
Haczyk na wzorzec Metoda Szablonowa...
Zastosowanie haczyka
Testujemy naszą aplikację
Reguła Hollywood
Reguła Hollywood a wzorzec Metoda Szablonowa
Wzorzec Metoda Szablonowa w głębokiej kniei...
Sortowanie przy uŜyciu wzorca Metoda Szablonowa
A teraz musimy posortować trochę kaczek...
Porównywanie kaczek z innymi kaczkami
Robimy maszynę do sortowania kaczek
Zabawy z ramkami
Aplety Java
Temat dzisiejszej wieczornej pogawędki: wzorce Metoda Szablonowa oraz
Strategia
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
310
311
312
314
315
316
318
319
321
322
323
324
326
328
329
330
332
333
9. Zarządzanie kolekcjami
Fuzja restauracji Diner i Pancake House
Implementacje menu Łukasza i Miłosza
Czy moŜna hermetyzować iteracje?
Wzorzec Iterator
Wiązanie iteratora z obiektem menu
Co juŜ mamy... Szersze spojrzenie na kod naszego projektu
Uproszczenia po wprowadzeniu interfejsu java.util.Iterator
Jaki jest efekt końcowy?
Definicja wzorca Iterator
Jeden zakres odpowiedzialności
Iteratory i kolekcje
Iteratory i kolekcje w języku Java 5
I gdy juŜ miało być tak dobrze...
Definicja wzorca Kompozyt
Projektujemy menu oparte na wzorcu Kompozyt
Implementacja klasy Menu
Powracamy do iteratora
IteratorPusty
Wzorce Iterator i Kompozyt razem...
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
336
338
343
345
347
351
353
355
356
359
368
369
373
376
379
382
388
392
394
399
400
10. Stan obiektu
Krótka narada
Maszyny stanowe 101
Piszemy kod
Wiedziałeś, Ŝe to jest blisko... zmiana!
405
406
408
412
Kłopotliwy STAN rzeczy...
Definiowanie interfejsów i klas reprezentacji stanu
Implementowanie klas Stan
Nowa wersja automatu sprzedającego
Definicja wzorca Stan
Wzorzec Stan kontra wzorzec Strategia
Wzorzec Stan, weryfikacja projektu
Niemal zapomnieliśmy!
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
414
417
419
420
428
429
435
438
441
442
11. Kontrola dostępu do obiektu
Kontrolowanie stanu automatów sprzedających
Rola "zdalnego pośrednika"
RMI - wycieczka z przewodnikiem
Zdalny pośrednik automatu sprzedającego
Pośrednik zdalny, za kulisami
Definicja wzorca Proxy
Pośrednik wirtualny
Projektowanie wirtualnego pośrednika do wyświetlania okładek
Pośrednik wirtualny, za kulisami
Wykorzystanie mechanizmów Java API
Teatrzyk - ochrona przedmiotów
Budowanie dynamicznego pośrednika
ZOO pośredników
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
448
452
455
468
476
478
480
482
488
492
496
497
506
508
509
12. Łączenie wzorców
Wzorzec złoŜony
Powrót kaczek
Potrzebujemy adaptera gęsi
Wprowadzamy zliczanie kwaknięć
Fabryka produkująca kaczki
Tworzymy stado kaczek
Przygotowanie interfejsu Observable
Co zrobiliśmy?
Widok z lotu kaczki - diagram klas
Model-Widok-Kontroler - piosenka
Kluczem do schematu MVC będą wzorce projektowe
Spojrzenie na schemat Model-Widok-Kontroler przez pryzmat wzorców
Wykorzystujemy MVC do sterowania beatem...
Piszemy kod elementów
Widok
A teraz kontroler
Eksplorujemy moŜliwości wzorca Strategia
Adaptowanie modelu
Nowy kontroler - SerceKontroler
518
519
522
524
526
531
534
541
542
544
546
550
552
555
557
560
563
564
565
Wzorzec MVC i sieć WWW
Model 2 a wzorce projektowe
Twoja skrzynka narzędziowa
Rozwiązania ćwiczeń
567
575
578
579
13. Wzorce projektowe w praktyce
Przewodnik na nowe Ŝycie z wzorcami
Definicja wzorca projektowego
Drugie spojrzenie na definicję wzorca
Niech moc będzie z Tobą
Katalog wzorców
Jak tworzyć wzorce
Zostać autorem wzorców projektowych
Porządkowanie wzorców projektowych
Myślenie wzorcami
Głowa pełna wzorców
Nie zapominaj o potędze jednolitego słownictwa
Pięć podstawowych sposobów promowania Twojego słownictwa
Gang Czterech w Obiektowie
PodróŜ dopiero się zaczyna...
Inne źródła informacji o wzorcach
ZOO pełne wzorców
Walka ze złem przy uŜyciu antywzorców
Twoja skrzynka narzędziowa
Opuszczamy Obiektowo...
596
597
599
600
601
604
605
607
612
615
617
618
619
620
621
622
624
626
627
Dodatek - inne wzorce
Bridge most
Builder budowniczy
Chain of Responsibility łańcuch odpowiedzialności
Flyweight waga piórkowa
Interpreter interpreter
Mediator mediator
Memento memento
Prototype prototyp
Visitor gość
630
632
634
636
638
640
642
644
646
Skorowidz
649
oprac. BPK

Podobne dokumenty