Wzorce projektowe dla programistów Javy. Udoskonal swoje umiejętności projektowania oprogramowania - ebook
Wzorce projektowe dla programistów Javy. Udoskonal swoje umiejętności projektowania oprogramowania - ebook
Właściwe stosowanie wzorców projektowych jest umiejętnością, którą bardzo cenią twórcy oprogramowania. Wzorce pozwalają na szybkie opracowanie złożonych zagadnień i umożliwiają tworzenie kodu nadającego się do wielokrotnego użycia. Taki kod jest przy tym wydajny, łatwy w testowaniu i utrzymaniu. Z pewnością wzorce projektowe są świetnym rozwiązaniem dla inżyniera, który chce doskonalić umiejętności projektowania oprogramowania.
Książka stanowi zbiór praktycznych informacji dotyczących najpopularniejszych wzorców projektowych. Lekturę rozpoczniesz od zapoznania się z możliwościami korzystania z wzorców projektowych na platformie Javy. Dowiesz się także, jakich zasad trzeba przestrzegać, aby zapewnić czytelność i łatwość utrzymania kodu Javy. W kolejnych rozdziałach znajdziesz praktyczne wskazówki i przykłady dotyczące stosowania wzorców kreacyjnych, strukturalnych, operacyjnych, a także wzorców współbieżności. Nauczysz się ich używać do praktycznego rozwiązywania problemów często spotykanych podczas projektowania oprogramowania. Końcowy rozdział został poświęcony antywzorcom, a zawarte w nim informacje pomogą Ci w ich identyfikacji i podjęciu najlepszych środków zaradczych.
W książce:
- jakie problemy można rozwiązać za pomocą wzorców projektowych w Javie
- jakie możliwości ma programowanie współbieżne
- jak wzorzec projektowy Obserwator buduje relację "jeden-do-wielu" między instancjami
- jakie problemy pomaga rozwiązać wzorzec Odwiedzający
- jak kontrolować zasoby przy użyciu wzorca Pula wątków
- jak zaradzić problemom spowodowanym przez antywzorce
Wzorce projektowe: niezbędnik najlepszych programistów Javy!
Spis treści
O autorze
O recenzencie
Słowo wstępne
Wstęp
CZĘŚĆ 1. Wzorce projektowe i funkcjonalności platformy Java
- Rozdział 1. Wprowadzenie do wzorców projektowych oprogramowania
- Wymagania techniczne
- Kod - od symboli do programu
- Programowanie obiektowe i APDH
- Prezentowanie tylko tego, co niezbędne - hermetyzacja
- Nieunikniona ewolucja - dziedziczenie
- Zachowanie na żądanie - polimorfizm
- Standardowe możliwości - abstrakcja
- Elementy scalające APDH
- Rozumienie zasad projektowania SOLID
- Zasada jednej odpowiedzialności (SRP) - silnik to tylko silnik
- Zasada otwarte-zamknięte (OCP)
- Zasada podstawienia Liskov (LSP) - możliwość zastępowania klas
- Zasada segregacji interfejsów (ISP)
- Zasada odwrócenia zależności (DIP)
- Znaczenie wzorców projektowych
- Przegląd wyzwań rozwiązywanych przez wzorce projektowe
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 2. Odkrywanie platformy Java pod kątem wzorców projektowych
- Wymagania techniczne
- Wstępne poznawanie Javy
- Przedstawienie modelu platformy Java oraz jej możliwości
- JDK
- JRE
- JVM
- Przegląd odzyskiwania pamięci i modelu pamięci w Javie
- JMM
- Odśmiecanie i automatyczne zarządzanie pamięcią
- Przedstawienie podstawowych API Javy
- Podstawowe typy danych i typy opakowujące
- Praca z API klasy String
- Przedstawienie tablic
- Prezentacja frameworka kolekcji
- API operacji matematycznych
- Programowanie funkcyjne w Javie
- Przedstawienie wyrażeń lambda i interfejsów funkcyjnych
- Korzystanie z interfejsów funkcyjnych w wyrażeniach lambda
- Przedstawienie systemu modułów Javy
- Krótki przegląd możliwości Javy z wersji od 11 do 17+
- Składnia zmiennych lokalnych dla parametrów wyrażeń lambda (Java SE 11, JEP-323)
- Wyrażenie switch (Java SE 14, JEP-361)
- Bloki tekstowe (Java SE 15, JEP-378)
- Dostosowywanie wzorców w operatorze instanceof (Java SE 16, JEP-394)
- Rekordy (Java SE 16, JEP-395)
- Klasy zapieczętowane (Java SE 17, JEP-409)
- Domyślnie stosowane kodowanie UTF-8 (Java SE 18, JEP-400)
- Dopasowywanie wzorców w instrukcji switch (Java SE 18, Second Preview, JEP-420)
- Prezentacja współbieżności w Javie
- Od prostych wątków do wykonawców
- Wykonywanie zadań
- Podsumowanie
- Pytania
- Dalsza lektura
CZĘŚĆ 2. Implementowanie standardowych
- Rozdział 3. Kreacyjne wzorce projektowe
- Wymagania techniczne
- Wszystko zaczyna się od klas, które stają się obiektami
- Tworzenie obiektów na podstawie danych wejściowych przy użyciu wzorca Metoda wytwórcza
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Tworzenie obiektów z różnych rodzin przy użyciu wzorca Fabryka abstrakcyjna
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Tworzenie złożonych obiektów przy użyciu wzorca Budowniczy
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Klonowanie obiektów przy wykorzystaniu wzorca Prototyp
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Zapewnianie istnienia tylko jednego obiektu przy użyciu wzorca projektowego Singleton
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Poprawianie wydajności dzięki wykorzystaniu wzorca Pula obiektów
- Uzasadnienie
- Przykłady wykorzystania wzorca w JDK
- Przykładowy kod
- Wniosek
- Inicjalizacja obiektów na żądanie przy wykorzystaniu wzorca Leniwa inicjalizacja
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Zmniejszanie zależności przy wykorzystaniu wzorca Wstrzykiwanie zależności
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 4. Stosowanie strukturalnych wzorców projektowych
- Wymagania techniczne
- Współpraca niezgodnych obiektów dzięki użyciu wzorca Adapter
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Rozdzielanie i niezależne rozwijanie obiektów dzięki użyciu wzorca Most
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Traktowanie obiektów w ten sam sposób dzięki użyciu wzorca Kompozyt
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Rozszerzanie funkcjonalności obiektów przy użyciu wzorca Dekorator
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Upraszczanie komunikacji przy użyciu wzorca Fasada
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Stosowanie warunków do wybierania pożądanych obiektów przy wykorzystaniu wzorca Filtr
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Współdzielenie obiektów w całej aplikacji przy wykorzystaniu wzorca Pyłek
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Obsługa żądań przy wykorzystaniu wzorca projektowego Front Controller
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Identyfikowanie instancji za pomocą wzorca Znacznik
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Poznawanie koncepcji modułów przy wykorzystaniu wzorca Moduł
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Dostarczanie zamiennika przy użyciu wzorca Pełnomocnik
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Odkrywanie wielokrotnego dziedziczenia w Javie za pomocą wzorca Bliźniak
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 5. Operacyjne wzorce projektowe
- Wymagania techniczne
- Ograniczanie kosztownej inicjalizacji przy użyciu wzorca Buforowanie
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Obsługa zdarzeń przy wykorzystaniu wzorca Łańcuch zobowiązań
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Przekształcanie informacji w działanie przy użyciu wzorca Polecenie
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Nadawanie znaczenia kontekstowi przy użyciu wzorca Interpreter
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Sprawdzanie wszystkich elementów przy użyciu wzorca Iterator
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Stosowanie wzorca Mediator do wymiany informacji
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Przywracanie pożądanego stanu przy wykorzystaniu wzorca Pamiątka
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Unikanie wyjątków związanych z wartością null przy użyciu wzorca Obiekt pusty
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Informowanie wszystkich zainteresowanych stron przy użyciu wzorca Obserwator
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Obsługa etapów istnienia instancji przy wykorzystaniu wzorca Potok
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Zmiana zachowania obiektu przy wykorzystaniu wzorca Stan
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Wykorzystanie wzorca Strategia do zmiany zachowania obiektu
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Standaryzacja procesów przy użyciu wzorca Metoda szablonowa
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Wykonywanie kodu w oparciu o typ obiektu przy użyciu wzorca Odwiedzający
- Uzasadnienie
- Przykłady zastosowania w JDK
- Przykładowy kod
- Wniosek
- Podsumowanie
- Pytania
- Dalsza lektura
CZĘŚĆ 3. Inne ważne wzorce projektowe i antywzorce
- Rozdział 6. Wzorce projektowe współbieżności
- Wymagania techniczne
- Separowanie wykonania metody przy użyciu wzorca Aktywny obiekt
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Tworzenie nieblokujących zadań przy użyciu wzorca Asynchroniczne wywołanie metody
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Opóźnianie wykonania do momentu ukończenia poprzedniego zadania przy wykorzystaniu wzorca Balking
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Udostępnianie unikalnej instancji przy użyciu wzorca Podwójnie sprawdzane blokowanie
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Stosowanie celowego blokowania wątków przy użyciu wzorca Blokada odczytu-zapisu
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Separowanie logiki wykonania przy wykorzystaniu wzorca Producent-konsument
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Realizacja odizolowanych zadań przy użyciu wzorca Dyspozytor
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Efektywne wykorzystanie wątków za pomocą wzorca Pula wątków
- Uzasadnienie
- Przykładowy kod
- Wniosek
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 7. Popularne antywzorce
- Wymagania techniczne
- Czym są antywzorce i jak je identyfikować
- Zmiana zasad teoretycznych
- Gromadzenie długu technicznego jako wąskie gardło
- Niewłaściwe wykorzystanie możliwości platformy Java
- Wybór odpowiedniego narzędzia
- Podsumowanie antywzorca zapachu kodu
- Badanie typowych antywzorców oprogramowania
- Rozwlekły złożony kod
- Programowanie oparte na kopiowaniu i wklejaniu
- Klucha
- Potok lawy (ang. lava flow)
- Dekompozycja funkcjonalna
- Kotwica
- Wniosek
- Zrozumienie antywzorców architektury oprogramowania
- Złoty młotek
- Ciągłe starzenie się
- Wadliwe dane wejściowe
- Praca na polu minowym
- Niejednoznaczny punkt widzenia
- Poltergeist
- Ślepy zaułek
- Wniosek
- Podsumowanie
- Dalsza lektura
Odpowiedzi
- Rozdział 1. Wprowadzenie do wzorców projektowych oprogramowania
- Rozdział 2. Odkrywanie platformy Java pod kątem wzorców projektowych
- Rozdział 3. Stosowanie kreacyjnych wzorców projektowych
- Rozdział 4. Stosowanie strukturalnych wzorców projektowych
- Rozdział 5. Operacyjne wzorce projektowe
- Rozdział 6. Wzorce projektowe współbieżności
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-0773-7 |
Rozmiar pliku: | 8,9 MB |