Wzorce projektowe
Rusz głową!
Otwórz swój umysł.
Poznaj wszystko, co związane z wzorcami projektowymi, w sposób gwarantujący szybkie
i skuteczne opanowanie zasad ich stosowania.
Zapomnij o listingach liczących tysiące wierszy, długich i nużących opisach
teoretycznych oraz rozbudowanych schematach zależności. Wzorce projektowe to gotowe
opisy rozwiązań najczęstszych problemów napotykanych przy tworzeniu oprogramowania.
Aby je prawidłowo stosować, należy poznać założenia, na podstawie których zostały
stworzone, oraz nauczyć się implementować je we właściwy sposób.
Nikt ci tego nie potrafił wytłumaczyć? Wydaje Ci się, że to problem nie na Twoją
głowę? Nie potrzebujesz elektrowstrząsów, żeby pobudzić swój mózg do aktywnego
działania. Tylko żadnych gwałtownych gestów! Usiądź wygodnie, otwórz książkę,
dopiero teraz się zacznie. Na początek - rusz głową!
Nauka to znacznie więcej niż tylko czytanie suchego tekstu. Twój mózg jest niczym
głodny rekin, cały czas prący naprzód w poszukiwaniu nowej, apetycznej przekąski. Jak
karmimy Twój wygłodniały umysł?
Używamy rysunków, bo obraz wart jest 1024 słów. Stosujemy powtórzenia, by
zakodować na stałe dane w Twojej chłonnej głowie. Oddziałujemy na emocje, jesteśmy
nieprzewidywalni, zaskakujący i zabawni. Stawiamy przed Tobą wyzwania i zadajemy
pytania, które angażują Cię w proces studiowania przedstawianych zagadnień. Cały
czas pobudzamy Twój umysł do aktywnego działania, zmuszamy go do posłuszeństwa... a
za ciężką pracę nagrodzimy go smakowitym ciasteczkiem w postaci wiedzy - wisienka
gratis!
Cele stosowania wzorców projektowych
Założenia, na których opierają się wzorce projektowe
Najważniejsze i najczęściej wykorzystywane wzorce projektowe
Przechowywanie i prezentacja danych
Mechanizm RMI
Wzorzec MVC
Implementacja wzorców projektowych w aplikacjach
Wprowadzenie
- Dla kogo przeznaczona jest ta książka? (22)
- Wiemy także, co sobie myśli Twój mózg (23)
- Zmuś swój mózg do posłuszeństwa (27)
- Zespół recenzentów technicznych (30)
- Podziękowania (31)
1. Witamy w krainie wzorców projektowych
- Prosta aplikacja o nazwie SymulatorKaczki (34)
- Jacek rozmyśla o dziedziczeniu... (37)
- 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)
2. Jak sprawić, by Twoje obiekty były zawsze dobrze poinformowane
- 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)
3. Dekorowanie zachowania obiektów
- Witamy w "Star Cafe" (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 Cafe" (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)
- Twoja skrzynka narzędziowa (135)
- Rozwiązania ćwiczeń (136)
4. Pizzeria zorientowana obiektowo
- Kiedy widzisz "nowy" obiekt, myśl o nim jako o "konkretnym" (140)
- Pizza w Obiektowie (142)
- Hermetyzacja procesu tworzenia obiektów (144)
- Budujemy prostą fabrykę pizzy (145)
- Tworzymy definicję "wzorca" Simple Factory (147)
- Nowa struktura Pizzerii (150)
- Zezwalamy klasom podrzędnym na podejmowanie decyzji (151)
- Tworzymy Pizzerię (153)
- Deklarowanie metody typu Fabryka (155)
- Spotkanie z wzorcem Metoda Fabrykująca (161)
- Równoległa hierarchia klas (162)
- Definicja wzorca Metoda Fabrykująca (164)
- Pizzeria mocno uzależniona (167)
- Sprawdzamy zależności pomiędzy obiektami (168)
- Zastosowanie reguły DIP (170)
- A w międzyczasie, na zapleczu Pizzerii... (174)
- Rodziny składników... (175)
- Budujemy fabryki składników pizzy (176)
- Fabryka Abstrakcyjna (183)
- Za kulisami (184)
- Definicja wzorca Fabryka Abstrakcyjna (186)
- Porównanie Metody Fabrykującej oraz Fabryki Abstrakcyjnej (190)
- Twoja skrzynka narzędziowa (192)
- Rozwiązania ćwiczeń (193)
5. Obiekty jedyne w swoim rodzaju
- Jeden i tylko jeden (198)
- Mały Singleton (199)
- Analiza klasycznej implementacji wzorca Singleton (201)
- Wyznania obiektu Singleton (202)
- Fabryka czekolady (203)
- Definicja wzorca Singleton (205)
- Ups, mamy problem... (206)
- Zostań wirtualną maszyną Java (207)
- Jak sobie radzić z wielowątkowością? (208)
- Wzorzec Singleton - pytania i odpowiedzi (212)
- Twoja skrzynka narzędziowa (214)
- Rozwiązania ćwiczeń (216)
6. Hermetyzacja wywołań
- Automatyka w domu i zagrodzie (218)
- Mamy nową zabawkę! Sprawdzamy, jak działa SuperPilot... (219)
- Co zawiera otrzymany dysk CD-R? (220)
- A w międzyczasie w naszym barze szybkiej obsługi... (223)
- Przyjrzyjmy się nieco dokładniej wzajemnym interakcjom... (224)
- Zadania i zakresy odpowiedzialności (225)
- Od Baru do wzorca Polecenie (227)
- Nasze pierwsze POLECENIE (229)
- Definicja wzorca Polecenie (232)
- Wzorzec Command i SuperPilot (234)
- Implementujemy SuperPilota (236)
- Sprawdzamy możliwości naszego SuperPilota (238)
- Nadszedł wreszcie czas, aby utworzyć trochę dokumentacji... (241)
- Implementacja mechanizmu wycofywania przy użyciu stanów (246)
- Każdy pilot powinien posiadać tryb Impreza! (250)
- Zastosowanie makropoleceń (251)
- Kolejne zastosowania wzorca Polecenie - kolejkowanie żądań (254)
- Kolejne zastosowania wzorca Polecenie - żądania rejestracji (255)
- Twoja skrzynka narzędziowa (256)
- Rozwiązania ćwiczeń (258)
7. Zdolność do adaptacji
- Adaptery są wśród nas (260)
- Adaptery zorientowane obiektowo (261)
- Wzorzec Adapter bez tajemnic (265)
- Definicja wzorca Adapter (267)
- Adaptery obiektów i klas (268)
- Temat dzisiejszej wieczornej pogawędki: Adapter obiektów i Adapter klas (271)
- Adaptery w świecie rzeczywistym (272)
- Adaptujemy interfejs Enumeration do wymagań interfejsu Iterator (273)
- Temat dzisiejszej wieczornej pogawędki: wzorce Dekorator i Adapter (276)
- Nie ma to jak kino domowe (279)
- Światła, kamera, fasada! (282)
- Konstruujemy fasadę naszego systemu kina domowego (285)
- Definicja wzorca Fasada (288)
- Reguła ograniczania interakcji (289)
- Twoja skrzynka narzędziowa (294)
- Rozwiązania ćwiczeń (296)
8. Hermetyzacja algorytmów
- Tworzymy klasy reprezentujące kawę i herbatę (w języku Java) (299)
- Kawa i herbata, czyli klasy abstrakcyjne (302)
- Ciągniemy nasz projekt o krok dalej... (303)
- Wydobywanie metody recepturaParzenia() (304)
- Czego już dokonaliśmy? (307)
- Spotkanie z wzorcem Metoda Szablonowa (308)
- Zróbmy sobie herbatę... (309)
- Co nam daje zastosowanie metody szablonowej? (310)
- Definicja wzorca Metoda Szablonowa (311)
- Bliskie spotkania z kodem aplikacji (312)
- Haczyk na wzorzec Metoda Szablonowa... (314)
- Zastosowanie haczyka (315)
- Testujemy naszą aplikację (316)
- Reguła Hollywood (318)
- Reguła Hollywood a wzorzec Metoda Szablonowa (319)
- Wzorzec Metoda Szablonowa w głębokiej kniei... (321)
- Sortowanie przy użyciu wzorca Metoda Szablonowa (322)
- A teraz musimy posortować trochę kaczek... (323)
- Porównywanie kaczek z innymi kaczkami (324)
- Robimy maszynę do sortowania kaczek (326)
- Zabawy z ramkami (328)
- Aplety Java (329)
- Temat dzisiejszej wieczornej pogawędki: wzorce Metoda Szablonowa oraz Strategia (330)
- Twoja skrzynka narzędziowa (332)
- Rozwiązania ćwiczeń (333)
9. Zarządzanie kolekcjami
- Fuzja restauracji Diner i Pancake House (336)
- Implementacje menu Łukasza i Miłosza (338)
- Czy można hermetyzować iteracje? (343)
- Wzorzec Iterator (345)
- Wiązanie iteratora z obiektem menu (347)
- Co już mamy... Szersze spojrzenie na kod naszego projektu (351)
- Uproszczenia po wprowadzeniu interfejsu java.util.Iterator (353)
- Jaki jest efekt końcowy? (355)
- Definicja wzorca Iterator (356)
- Jeden zakres odpowiedzialności (359)
- Iteratory i kolekcje (368)
- Iteratory i kolekcje w języku Java 5 (369)
- I gdy już miało być tak dobrze... (373)
- Definicja wzorca Kompozyt (376)
- Projektujemy menu oparte na wzorcu Kompozyt (379)
- Implementacja klasy Menu (382)
- Powracamy do iteratora (388)
- IteratorPusty (392)
- Wzorce Iterator i Kompozyt razem... (394)
- Twoja skrzynka narzędziowa (399)
- Rozwiązania ćwiczeń (400)
10. Stan obiektu
- Krótka narada (405)
- Maszyny stanowe 101 (406)
- Piszemy kod (408)
- Wiedziałeś, że to jest blisko... zmiana! (412)
- Kłopotliwy STAN rzeczy... (414)
- Definiowanie interfejsów i klas reprezentacji stanu (417)
- Implementowanie klas Stan (419)
- Nowa wersja automatu sprzedającego (420)
- Definicja wzorca Stan (428)
- Wzorzec Stan kontra wzorzec Strategia (429)
- Wzorzec Stan, weryfikacja projektu (435)
- Niemal zapomnieliśmy! (438)
- Twoja skrzynka narzędziowa (441)
- Rozwiązania ćwiczeń (442)
11. Kontrola dostępu do obiektu
- Kontrolowanie stanu automatów sprzedających (448)
- Rola "zdalnego pośrednika" (452)
- RMI - wycieczka z przewodnikiem (455)
- Zdalny pośrednik automatu sprzedającego (468)
- Pośrednik zdalny, za kulisami (476)
- Definicja wzorca Proxy (478)
- Pośrednik wirtualny (480)
- Projektowanie wirtualnego pośrednika do wyświetlania okładek (482)
- Pośrednik wirtualny, za kulisami (488)
- Wykorzystanie mechanizmów Java API (492)
- Teatrzyk - ochrona przedmiotów (496)
- Budowanie dynamicznego pośrednika (497)
- ZOO pośredników (506)
- Twoja skrzynka narzędziowa (508)
- Rozwiązania ćwiczeń (509)
12. Łączenie wzorców
- Wzorzec złożony (518)
- Powrót kaczek (519)
- Potrzebujemy adaptera gęsi (522)
- Wprowadzamy zliczanie kwaknięć (524)
- Fabryka produkująca kaczki (526)
- Tworzymy stado kaczek (531)
- Przygotowanie interfejsu Observable (534)
- Co zrobiliśmy? (541)
- Widok z lotu kaczki - diagram klas (542)
- Model-Widok-Kontroler - piosenka (544)
- Kluczem do schematu MVC będą wzorce projektowe (546)
- Spojrzenie na schemat Model-Widok-Kontroler przez pryzmat wzorców (550)
- Wykorzystujemy MVC do sterowania beatem... (552)
- Piszemy kod elementów (555)
- Widok (557)
- A teraz kontroler (560)
- Eksplorujemy możliwości wzorca Strategia (563)
- Adaptowanie modelu (564)
- Nowy kontroler - SerceKontroler (565)
- Wzorzec MVC i sieć WWW (567)
- Model 2 a wzorce projektowe (575)
- Twoja skrzynka narzędziowa (578)
- Rozwiązania ćwiczeń (579)
13. Wzorce projektowe w praktyce
- Przewodnik na nowe życie z wzorcami (596)
- Definicja wzorca projektowego (597)
- Drugie spojrzenie na definicję wzorca (599)
- Niech moc będzie z Tobą (600)
- Katalog wzorców (601)
- Jak tworzyć wzorce (604)
- Zostać autorem wzorców projektowych (605)
- Porządkowanie wzorców projektowych (607)
- Myślenie wzorcami (612)
- Głowa pełna wzorców (615)
- Nie zapominaj o potędze jednolitego słownictwa (617)
- Pięć podstawowych sposobów promowania Twojego słownictwa (618)
- Gang Czterech w Obiektowie (619)
- Podróż dopiero się zaczyna... (620)
- Inne źródła informacji o wzorcach (621)
- ZOO pełne wzorców (622)
- Walka ze złem przy użyciu antywzorców (624)
- Twoja skrzynka narzędziowa (626)
- Opuszczamy Obiektowo... (627)
14. Dodatek - inne wzorce
- Bridge (most) (630)
- Builder (budowniczy) (632)
- Chain of Responsibility (łańcuch odpowiedzialności) (634)
- Flyweight (waga piórkowa) (636)
- Interpreter (interpreter) (638)
- Mediator (mediator) (640)
- Memento (memento) (642)
- Prototype (prototyp) (644)
- Visitor (gość) (646)
Skorowidz (649)
656 stron, Format: 20x23cm, oprawa miękka