Spis treści
Wprowadzenie
- Dla kogo przeznaczona jest ta książka? (xxvi)
- Wiemy, co sobie myślisz (xxvii)
- Wiemy także, co sobie myśli Twój mózg (xxvii)
- Wyobrażamy sobie, że Czytelnik tej książki jest uczniem (xxviii)
- Metapoznanie: myślenie o myśleniu (xxix)
- Oto co zrobiliśmy (xxx)
- Oto co możesz zrobić, aby zmusić swój mózg do posłuszeństwa (xxxi)
- Kilka ostatnich spraw, o których musisz wiedzieć (xxxii)
- Zespół recenzentów technicznych (xxxiv)
- Podziękowania (xxxv)
ROZDZIAŁ 1. Wprowadzenie do wzorców projektowych. Witamy w krainie wzorców projektowych
- Wszystko rozpoczęło się od prostej aplikacji o nazwie KaczySim (2)
- Ale teraz nasze kaczki muszą LATAĆ (3)
- Ale coś poszło strasznie nie tak… (4)
- Józek rozmyśla o dziedziczeniu… (5)
- A może by tak interfejs? (6)
- Co byś zrobił na miejscu Józka? (7)
- Jedyny pewny element procesu wytwarzania oprogramowania (8)
- Zerowanie problemu… (9)
- Oddzielanie tego, co się zmienia, od tego, co pozostaje niezmienione (10)
- Projektowanie zachowań Kaczki (11)
- Implementacja zachowań klasy Kaczka (13)
- Integracja zachowań klasy Kaczka (15)
- Testowanie kodu klasy Kaczka (18)
- Dynamiczne ustawianie zachowania (20)
- Kompletny diagram hermetyzowanych zachowań (22)
- Relacja MA może być lepsza od JEST (23)
- Rozmawiając o wzorcach projektowych… (24)
- Zasłyszane w lokalnym barze szybkiej obsługi… (26)
- Zasłyszane w sąsiednim boksie (27)
- Potęga wspólnego słownika wzorców (28)
- W jaki sposób mogę używać wzorców projektowych? (29)
- Narzędzia do Twojej projektowej skrzynki narzędziowej (32)
ROZDZIAŁ 2. Wzorzec Obserwator. Jak sprawić, by Twoje obiekty były zawsze dobrze poinformowane
- Ogólne spojrzenie na aplikację monitorującą warunki pogodowe (37)
- Spotkanie ze wzorcem Obserwator (42)
- Wydawca + prenumeratorzy = wzorzec Obserwator (43)
- Definicja wzorca Obserwator (49)
- Siła luźnych powiązań (52)
- Projektowanie stacji meteorologicznej (55)
- Implementacja stacji meteorologicznej (56)
- Włączamy zasilanie stacji meteorologicznej (59)
- Podglądanie wzorca Obserwator w naturze (63)
- Pisanie kodu aplikacji, która odmieni nasze życie (64)
- Wróćmy do prac nad aplikacją meteorologiczną (67)
- Jazda próbna nowego kodu (69)
- Twoja projektowa skrzynka narzędziowa (70)
- Reguły projektowe – wyzwanie (71)
ROZDZIAŁ 3. Wzorzec Dekorator. Dekorowanie obiektów
- Witamy w „Star Café” (76)
- Reguła otwarte-zamknięte (82)
- Spotkanie z wzorcem Dekorator (84)
- Konstruowanie zamówień przy użyciu dekoratorów (85)
- Definicja wzorca Dekorator (87)
- Dekorujemy nasze napoje (88)
- Tworzymy kod aplikacji „Star Café” (91)
- Tworzenie klas napojów (92)
- Tworzenie kodu klas dodatków (93)
- Podajemy kawy (94)
- Dekoratory w świecie rzeczywistym: obsługa wejścia-wyjścia w języku Java (96)
- Dekorowanie klas pakietu java.io (97)
- Tworzenie własnych dekoratorów obsługi wejścia-wyjścia (98)
- Testowanie nowego dekoratora strumieni wejścia-wyjścia (99)
- Twoja projektowa skrzynka narzędziowa (101)
ROZDZIAŁ 4. Wzorzec Fabryka. Wypieki obiektowe
- Identyfikacja zmiennych elementów aplikacji (108)
- Hermetyzacja procesu tworzenia obiektów (110)
- Budujemy prostą fabrykę pizzy (111)
- Tworzymy definicję „wzorca” Prosta Fabryka (113)
- Nowa struktura klasy Pizzeria (116)
- Zezwalamy klasom podrzędnym na podejmowanie decyzji (117)
- Deklarowanie metody typu Fabryka (121)
- Wreszcie nadszedł czas na spotkanie ze wzorcem Metoda Wytwórcza (127)
- Spojrzenie na równoległe hierarchie klas twórców i produktów (128)
- Definicja wzorca Metoda Wytwórcza (130)
- Sprawdzamy zależności między obiektami (134)
- Reguła odwracania zależności (135)
- Stosowanie reguły DIP (136)
- Rodziny składników… (141)
- Budujemy fabryki składników pizzy (142)
- Aktualizacja kodu klas Pizza (145)
- Odwiedzamy lokalne oddziały naszej sieci pizzerii (148)
- Czego udało się nam dokonać? (149)
- Definicja wzorca Fabryka Abstrakcyjna (152)
- Porównanie Metody Wytwórczej oraz Fabryki Abstrakcyjnej (156)
- Twoja projektowa skrzynka narzędziowa (158)
ROZDZIAŁ 5. Wzorzec Singleton. Obiekty jedyne w swoim rodzaju
- Analiza klasycznej implementacji wzorca Singleton (167)
- Fabryka czekolady (169)
- Definicja wzorca Singleton (171)
- Ups, mamy problem… (172)
- Jak sobie radzić z wielowątkowością? (174)
- Czy możemy ulepszyć działanie wielowątkowości? (175)
- A w międzyczasie w fabryce czekolady… (177)
- Twoja projektowa skrzynka narzędziowa (180)
ROZDZIAŁ 6. Wzorzec Polecenie. Hermetyzacja wywołań
- Automatyka w domu i zagrodzie (186)
- Przegląd dostarczonych klas (188)
- Krótkie wprowadzenie do wzorca Polecenie (191)
- Od baru do wzorca Polecenie (195)
- Nasze pierwsze polecenie (197)
- Zastosowanie polecenia (198)
- Przypisywanie poleceń do gniazd (203)
- Implementujemy SuperPilota (204)
- Implementacja poleceń (205)
- Sprawdzamy możliwości naszego SuperPilota (206)
- Nadszedł wreszcie czas, aby przygotować trochę dokumentacji… (209)
- Co robimy? (211)
- Sprawdzamy poprawność działania przycisku Wycofaj (214)
- Implementacja mechanizmu wycofywania przy użyciu stanów (215)
- Dodajemy mechanizm wycofywania do poleceń sterujących wentylatorem (216)
- Każdy pilot powinien mieć tryb Impreza! (219)
- Stosowanie makropoleceń (220)
- Kolejne zastosowania wzorca Polecenie – kolejkowanie żądań (223)
- Kolejne zastosowania wzorca Polecenie – żądania rejestracji (224)
- Wzorzec Polecenie w rzeczywistych zastosowaniach (225)
- Twoja projektowa skrzynka narzędziowa (227)
ROZDZIAŁ 7. Wzorce Adapter i Fasada. Zdolność adaptacji
- Adaptery są wszędzie wokół nas (232)
- Adaptery obiektowe (233)
- Jeśli coś chodzi jak kaczka i kwacze jak kaczka, to musi może być kaczką indykiem opakowanym w adapter kaczki… (237)
- Testujemy adapter dla indyka (236)
- Wzorzec Adapter bez tajemnic (237)
- Definicja wzorca Adapter (239)
- Adaptery obiektów i klas (240)
- Adaptery w świecie rzeczywistym (244)
- Adaptujemy interfejs Enumeration do wymagań interfejsu Iterator (245)
- Nie ma to jak kino domowe (251)
- Oglądanie filmów (wersja dla prawdziwych twardzieli) (252)
- Światła, kamera, fasada! (254)
- Konstruujemy fasadę naszego systemu kina domowego (257)
- Implementujemy uproszczony interfejs (258)
- Czas na seans (wersja soft, dla całej rodziny) (259)
- Definicja wzorca Fasada (260)
- Reguła ograniczonej interakcji (261)
- Jak zrazić do siebie przyjaciół, czyli interakcje między obiektami (262)
- Wzorzec Fasada kontra reguła ograniczania interakcji (265)
- Twoja projektowa skrzynka narzędziowa (266)
ROZDZIAŁ 8. Wzorzec Metoda Szablonowa. Hermetyzacja algorytmów
- Czas na nieco więcej kofeiny… (270)
- Tworzymy klasy reprezentujące kawę i herbatę (w języku Java) (271)
- Kawa i herbata, czyli klasy abstrakcyjne (274)
- Posuńmy nasz projekt o krok dalej… (275)
- Wyodrębnianie metody recepturaParzenia() (276)
- Co udało się nam osiągnąć? (279)
- Spotkanie z wzorcem Metoda Szablonowa (280)
- Co nam daje zastosowanie metody szablonowej? (282)
- Definicja wzorca Metoda Szablonowa (283)
- Stosujemy haczyk we wzorcu Metoda Szablonowa… (286)
- Zastosowanie haczyka (287)
- Reguła Hollywood a wzorzec Metoda Szablonowa (291)
- Wzorzec Metoda Szablonowa w dziczy… (293)
- Sortowanie przy użyciu wzorca Metoda Szablonowa (294)
- A teraz musimy posortować parę kaczek… (295)
- Czym jest metoda compareTo()? (295)
- Porównywanie kaczek z innymi kaczkami (296)
- No to posortujmy sobie trochę kaczek (297)
- Robimy maszynę do sortowania kaczek (298)
- Zabawy z ramkami (300)
- Tworzenie niestandardowej listy przy użyciu klasy AbstractList (301)
- Twoja projektowa skrzynka narzędziowa (305)
ROZDZIAŁ 9. Wzorce Iterator i Kompozyt. Zarządzanie kolekcjami
- Z ostatniej chwili – fuzja baru Obiadowo i restauracji Naleśnikarnia (308)
- Przegląd pozycji menu (309)
- Implementacja specyfikacji kelnerki: podejście pierwsze (313)
- Czy można hermetyzować iteracje? (315)
- Poznajemy wzorzec Iterator (317)
- Dodawanie iteratora do ObiadowoMenu (318)
- Poprawiamy kod kelnerki (320)
- Testowanie kodu (321)
- Przegląd aktualnego rozwiązania (323)
- Uproszczenia po wprowadzeniu interfejsu java.util.Iterator (325)
- Wzorzec Iterator – definicja (328)
- Struktura wzorca Iterator (329)
- Reguła pojedynczej odpowiedzialności (330)
- Poznajemy interfejs Iterable (333)
- Usprawniona pętla for Javy (334)
- Rzut oka na klasę ObiadManiaMenu (337)
- Iteratory i kolekcje (343)
- Czy kelnerka jest już gotowa? (345)
- Wzorzec Kompozyt (350)
- Projektujemy menu bazujące na wzorcu Kompozyt (353)
- Implementacja klasy MenuSkładnik (354)
- Implementacja klasy PozycjaMenu (355)
- Implementacja klasy Menu (356)
- A teraz testujemy… (359)
- Twoja projektowa skrzynka narzędziowa (365)
ROZDZIAŁ 10. Wzorzec Stan. Stan obiektu
- Guma do żucia i Java (370)
- Maszyny stanowe 101 (372)
- Piszemy kod (374)
- Test wewnętrzny (376)
- Wiedziałeś, że to jest blisko… prośba o zmianę! (378)
- Kłopotliwy stan rzeczy (380)
- Nowy projekt (382)
- Definiowanie interfejsów i klas reprezentacji stanu (383)
- Nowa wersja automatu sprzedającego (386)
- Przyjrzyjmy się nowej klasie AutomatSprzedający… (387)
- Implementowanie kolejnych stanów (388)
- Definicja wzorca Stan (394)
- Została jeszcze promocja 1 z 10 (397)
- Kończymy implementowanie promocji (398)
- Wersja demo dla prezesa (399)
- Weryfikacja projektu… (401)
- Niemal zapomnieliśmy! (404)
- Twoja projektowa skrzynka narzędziowa (407)
ROZDZIAŁ 11. Wzorzec Pośrednik. Kontrola dostępu do obiektu
- Kod monitora (415)
- Testowanie monitora (416)
- Zdalne wywołania metod 101 (421)
- Przygotowanie klasy AutomatSprzedający do pracy w charakterze usługi zdalnej (434)
- Dodanie wpisu do rejestru RMI… (436)
- Definicja wzorca Pośrednik (443)
- Przygotuj się na pośrednika wirtualnego (445)
- Projektowanie wirtualnego pośrednika do wyświetlania okładek (447)
- Kod klasy PośrednikObrazków (448)
- Wykorzystanie mechanizmów Java API do stworzenia pośrednika chroniącego (457)
- Swatanie w Obiektowie (458)
- Implementacja interfejsu Osoba (459)
- Teatrzyk – ochrona podmiotów (461)
- Z lotu ptaka – budowanie dynamicznego pośrednika klasy Osoba (462)
- Zoo pośredników (470)
- Twoja projektowa skrzynka narzędziowa (472)
- Kod przeglądarki okładek (475)
ROZDZIAŁ 12. Wzorce złożone. Łączenie wzorców
- Współdziałanie wzorców (480)
- Powrót kaczek (481)
- Co zrobiliśmy? (503)
- Widok z lotu kaczki – diagram klas (504)
- Król wzorców złożonych (506)
- Poznajemy wzorzec Model-Widok-Kontroler (509)
- Przyjrzyjmy się bliżej… (510)
- Model-Widok-Kontroler jako zestaw wzorców (512)
- Wykorzystujemy MVC do sterowania beatem… (514)
- Piszemy kod elementów (517)
- A teraz spójrzmy na rzeczywistą klasę BeatModel (518)
- Widok (519)
- Implementowanie widoku (520)
- A teraz kontroler (522)
- Łączymy wszystko w całość… (524)
- Eksplorujemy możliwości wzorca Strategia (525)
- Adaptowanie modelu (526)
- Testujemy… (528)
- Twoja projektowa skrzynka narzędziowa (531)
ROZDZIAŁ 13. Lepsze życie dzięki wzorcom. Wzorce projektowe w praktyce
- Wzorzec projektowy – definicja (551)
- Bliższe spojrzenie na definicję wzorca (553)
- Niech moc będzie z Tobą (554)
- A więc chcesz zostać autorem wzorców projektowych (559)
- Porządkowanie wzorców projektowych (561)
- Myślenie wzorcami (566)
- Głowa pełna wzorców (569)
- Nie zapominaj o potędze wspólnego słownictwa (571)
- Gang Czterech w Obiektowie (573)
- Podróż dopiero się zaczyna… (574)
- Zoo pełne wzorców (576)
- Walka ze złem przy użyciu antywzorców (578)
- Twoja projektowa skrzynka narzędziowa (580)
- Wyjeżdżamy z Obiektowa (581)
DODATEK: Pozostałe wzorce
- Most (584)
- Budowniczy (586)
- Łańcuch Odpowiedzialności (588)
- Pyłek (590)
- Interpreter (592)
- Mediator (594)
- Memento (596)
- Prototyp (598)
- Odwiedzający (600)
Skorowidz (602)
Opinie
Na razie nie ma opinii o produkcie.