Details zum E-Book

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

E-book

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
  • Titel: Wzorce projektowe dla programistów Javy. Udoskonal swoje umiejętności projektowania oprogramowania
  • Autor: Miroslav Wengner
  • Originaler Titel: Practical Design Patterns for Java Developers: Hone your software design skills by implementing popular design patterns
  • Übersetzung: Piotr Rajca
  • ISBN: 978-83-289-0773-7, 9788328907737
  • Veröffentlichungsdatum: 2024-03-11
  • Format: E-book
  • Artikelkennung: wzoprj
  • Verleger: Helion