Szczegóły ebooka

Wzorce projektowe dla programistów Javy. Udoskonal swoje umiejętności projektowania oprogramowania

Wzorce projektowe dla programistów Javy. Udoskonal swoje umiejętności projektowania oprogramowania

Miroslav Wengner

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!

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
  • Tytuł: Wzorce projektowe dla programistów Javy. Udoskonal swoje umiejętności projektowania oprogramowania
  • Autor: Miroslav Wengner
  • Tytuł oryginału: Practical Design Patterns for Java Developers: Hone your software design skills by implementing popular design patterns
  • Tłumaczenie: Piotr Rajca
  • ISBN: 978-83-289-0773-7, 9788328907737
  • Data wydania: 2024-03-11
  • Format: Ebook
  • Identyfikator pozycji: wzoprj
  • Wydawca: Helion