Szkolenie kompleksowe: Wzorce projektowe GoF w Javie
Najbliższe terminy tego szkolenia
Standardy JSystems
- Wszyscy nasi trenerzy muszą być praktykami i osiągać średnią z ankiet minimum 4.75 na 5. Nie ma wśród nas trenerów-teoretyków. Każdy trener JSystems ma bogate doświadczenie komercyjne w zakresie tematów z których prowadzi szkolenia.
- Wszystkie szkolenia mają format warszatowy. Każde zagadnienie teoretyczne jest poparte rzędem warsztatów w ściśle określonym formacie.
- Terminy gwarantowane na 100%. Jeśli jakiś termin jest oznaczony jako gwarantowany, oznacza to że odbędzie się nawet jeśli część grupy wycofa się z udziału. Ryzyko ponosimy my jako organizator.
- Do każdego szkolenia które wymaga jakiegokolwiek oprogramowania dostarczamy skonfigurowane, gotowe hosty w chmurze. Dzięki temu uczestnik nie musi nic instalować na swoim komputerze (i bić się z blokadami korporacyjnymi). Połączenie następuje przez zdalny pulpit lub SSH - w zależności od szkolenia.
Program szkolenia
- Wprowadzenie do wzorców projektowych
- Czym są wzorce projektowe?
- Historia i znaczenie wzorców GoF
- Kiedy i dlaczego stosować wzorce projektowe?
- Podział wzorców projektowych GoF
- Wzorce kreacyjne
- Wzorce strukturalne
- Wzorce behawioralne
- Wzorce kreacyjne wraz z implementacją w Javie
- Singleton: Zapewnienie istnienia jednej instancji klasy
- Factory Method: Tworzenie obiektów bez określania ich konkretnych klas
- Abstract Factory: Grupowanie powiązanych fabryk obiektów
- Builder / Fluent API: Ułatwienie konstrukcji złożonych obiektów
- Test Data Builder: Budowanie i reużywanie danych testowych
- Prototype: Tworzenie kopii obiektów
- Object Pool: Zarządzanie zestawem zainicjowanych obiektów, które mogą być ponownie używane, zamiast tworzyć je od nowa
- I inne
- Wzorce strukturalne wraz z implementacją w Javie
- Adapter: Dopasowanie jednej klasy do innego interfejsu
- Decorator: Dynamiczne rozszerzanie funkcji obiektów
- Facade: Uproszczenie skomplikowanych interfejsów
- Proxy: Zastępowanie obiektu innym w celu optymalizacji
- Bridge: Oddzielenie abstrakcji od jej implementacji
- Composite: Umożliwianie klientom traktowanie obiektów indywidualnych oraz grup obiektów w sposób jednolity (drzewiasta struktura)
- Flyweight: Minimalizowanie zużycia pamięci poprzez współdzielenie obiektów o tym samym stanie wewnętrznym i efektywne zarządzanie dużą liczbą małych obiektów
- I inne
- Wzorce behawioralne wraz z implementacją w Javie
- Observer: Reagowanie na zmiany stanu obiektu
- Strategy: Dynamiczna zmiana algorytmów w trakcie działania
- Command: Oddzielenie żądania od obiektu wykonującego
- Chain of Responsibility: Przekazywanie żądania przez łańcuch przetwarzania
- Template Method: Definiowanie szkieletu algorytmu w klasie bazowej
- State: Zmiana zachowania obiektu na podstawie jego stanu
- Iterator: Udostępnianie sekwencyjnego dostępu do elementów kolekcji bez ujawniania jej wewnętrznej reprezentacji
- Mediator: Redukowanie bezpośrednie zależności między obiektami, wprowadzając pośrednika, który koordynuje komunikację między nimi
- Memento: Zapisywanie i przywracanie wcześniejszych stanów obiektów bez naruszania ich hermetyzacji
- Visitor: Oddzielanie algorytm od struktury obiektów
- Dispatcher: Rozdzielanie zadań, zdarzeń lub żądań do odpowiednich handlerów lub procesów
- I inne
- Przykłady zastosowania wzorców w popularnych frameworkach i bibliotekach
- Wzorce projektowe w Spring, Spring Boot, Spring Security, Spring Batch, Spring AOP
- Wzorce projektowe w JPA/Hibernate/JDBC
- Wzorce projektowe w Java I/O
- Wzorce projektowe w Java EE/EJB/Servlet API
- Wzorce projektowe w Lombok
- Wzorce projektowe w JavaFX
- Wzorce projektowe w CQRS
- Wzorce projektowe w REST
- Wzorce projektowe w JUnit/TestNG
- Antywzorce (Antipatterns) i zapachy kodu (code smells)
- Definicja antywzorca
- Definicja zapachu kodu
- Przykłady powszechnych antywzorców i zapachów kodu
- Long Method
- Large Class
- Duplicated Code
- Long Parameter List
- Feature Envy
- Data Clumps
- Primitive Obsession
- Switch Statements
- Comments
- Lazy Class
- Speculative Generality
- Temporary Field
- Message Chains
- Middle Man
- Inappropriate Intimacy
- Refused Bequest
- Data Class
- God Class / Object / Method
- Spaghetti Code
- Golden Hammer
- Poltergeist
- Premature Optimization
- Anemic Domain Model
- Big Ball of Mud
- Shotgun Surgery
- Lava Flow
- Magic Numbers
- Copy-Paste Programming
- Circular Dependency
- Overengineering
- Stovepipe System
- Dead Code
- Hardcoding
- Inner-Platform Effect
- Swiss Army Knife
- Leaky Abstraction
- I inne
- Warsztaty praktyczne
- Ćwiczenia z implementacji wzorców projektowych w małych projektach
- Refaktoryzacja istniejącego kodu z antywzorcami i zapachami kodu przy użyciu wzorców GoF
- Rozwiązywanie typowych problemów projektowych za pomocą wzorców
- Jak wybierać odpowiednie wzorce do rozwiązywania problemów?
- Jak rozpoznać i unikać antywzorców i zapachów kodu
- Przykłady z życia codziennego w projektach
- Najlepsze praktyki
Opis szkolenia
Szkolenie odbywa się na żywo z udziałem trenera. Nie jest to forma kursu video!Na szkoleniu zdobędziesz wiedzę i umiejętności niezbędne do efektywnego stosowania wzorców projektowych zdefiniowanych przez "Gang of Four" (GoF). Nauczysz się, jak implementować najważniejsze wzorce w Javie, a także zobaczysz, jak są one wykorzystywane w popularnych projektach, frameworkach (takich jak Spring) i bibliotekach. Szkolenie kładzie nacisk na praktykę - uczestnicy będą mieli okazję przećwiczyć implementację wzorców na rzeczywistych przykładach.
Dodatkowo nauczysz się rozpoznawać, unikać i refaktoryzować antywzorce (antipatterns) oraz zapachy kodu (code smells) oraz identyfikować najczęstsze problemy w architekturze oprogramowania oraz kodzie i skutecznie je naprawiać. Poznasz praktyczne techniki poprawy jakości kodu, co pozwoli ci tworzyć bardziej czytelne, elastyczne i łatwiejsze do utrzymania rozwiązania.
Prowadzący szkolenie: Maciej Górnicki
Programista i projektant z 13-letnim doświadczeniem, specjalizujący się w Javie i full-stack development. Pracował nad dużymi projektami korporacyjnymi w sektorach fintech oraz insurtech, zdobywając bogate doświadczenie w tworzeniu systemów rozproszonych oraz integracji opartej o API i zdarzenia.
Jako specjalista w dziedzinie Java i architektury oprogramowania, zajmował się również strategicznym rozwojem kompetencji technicznych w organizacji, będąc aktywnym rekruterem technicznym, trenerem oraz mentorem. Pasjonat współpracy z ekspertami domenowymi i klientami, z zamiłowaniem do prostoty i czytelności, z zainteresowaniem Domain Driven Design (DDD) oraz innymi podejściami inżynierii oprogramowania zorientowanymi na domenę biznesową.
Stanowisko robocze
Do tego szkolenia każdy uczestnik otrzymuje dostęp do indywidualnej wirtualnej maszyny w chmurze. Ma ona zainstalowane i skonfigurowane wszystko co potrzebne do realizacji szkolenia. Maszyna będzie dostępna przez cały okres szkolenia.
Gdy na jakiś termin zgłosi się minimalna liczba osób, termin oznaczamy jako gwarantowany.
Jeśli jakiś termin oznaczony jest jako gwarantowany to oznacza to, że na 100% się odbędzie we wskazanym czasie i miejscu.
Nawet gdyby część takiej grupy zrezygnowała lub przeniosła się na inny termin, raz ustalony termin gwarantowany takim pozostaje.
Ewentualne ryzyko ponosimy my jako organizator.
Przejdź do terminów tego szkolenia
Sprawdź, co mówią o nas ci, którzy nam zaufali
Trenerzy kategorii Java
Programista i projektant z 13-letnim doświadczeniem, specjalizujący się w Javie i full-stack development. Pracował nad dużymi projektami korporacyjnymi w sektorach fintech oraz insurtech, zdobywając bogate doświadczenie w tworzeniu systemów rozproszonych oraz integracji opartej o API i zdarzenia.
Jako specjalista w dziedzinie Java i architektury oprogramowania, zajmował się również strategicznym rozwojem kompetencji technicznych w organizacji, będąc aktywnym rekruterem technicznym, trenerem oraz mentorem. Pasjonat współpracy z ekspertami domenowymi i klientami, z zamiłowaniem do prostoty i czytelności, z zainteresowaniem Domain Driven Design (DDD) oraz innymi podejściami inżynierii oprogramowania zorientowanymi na domenę biznesową.
Jestem programistą z ponad 15-letnim doświadczeniem. W trakcie swojej kariery kilka razy zmieniałem obszary, z którymi miałem do czynienia (poczynając od niskopoziomowego programowania w C, poprzez fullstackowe zabawy w RubyOnRails, aż do prawdziwego backendu w Javie). Odkąd pamiętam, zawsze lubiłem dzielić się wiedzą z innymi i sprawiało to satysfakcję obu stronom tego procesu. Dlatego naturalną konsekwencją było to, iż zostałem kilka lat temu profesjonalnym trenerem IT.
Prowadzenie szkoleń pozwala mi również na każdorazowe powtórzenie i ugruntowanie swojej wiedzy, co potem bardzo przydaje się w pracy projektowej. Natomiast to, co daje mi największe zadowolenie jako trenerowi, to sytuacja gdy uczeń przerośnie mistrza - wtedy wiem, że dałem z siebie wszystko, a moja praca przyniosła owoce.