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