Warsztat Java #10 - Design Principles i Design Patterns
What you'll learn
- DRY (Don't Repeat Yourself): Unikanie duplikacji kodu i promowanie reużywalności.
- KISS (Keep It Simple, Stupid): Utrzymywanie kodu prostym, zrozumiałym i łatwym w utrzymaniu.
- YAGNI (You Aren't Gonna Need It): Implementowanie tylko tych funkcji, które są obecnie potrzebne, unikanie nadmiarowości.
- SOLID: Pięć fundamentalnych zasad projektowania obiektowego
- Creational Patterns (Wzorce kreacyjne): Tworzenie obiektów w sposób, który jest odpowiedni do danej sytuacji.
- Structural Patterns (Wzorce strukturalne): Sposoby łączenia obiektów i klas w większe struktury.
- Behavioral Patterns (Wzorce behawioralne): Sposoby w jakie obiekty współpracują i komunikują się ze sobą.
Requirements
- Kurs jest intensywny i wymaga aktywnego uczestnictwa oraz chęci do nauki nowych narzędzi i technik. Otwartość na zdobywanie wiedzy teoretycznej i praktycznej jest kluczowa.
- Uczestnicy powinni być zaznajomieni z podstawami programowania w Javie, w tym z koncepcjami takimi jak klasy, obiekty, interfejsy i dziedziczenie.
Description
Zapraszamy na warsztat poświęcony zasadom pisania dobrego i czystego kodu oraz wzorcom projektowym w Javie! Kurs ten pomoże Ci zrozumieć, jak stosować sprawdzone zasady programowania oraz wzorce projektowe, aby rozwiązywać typowe problemy w sposób zrozumiały dla innych programistów i unikać ponownego wymyślania koła. W trakcie warsztatu skupimy się na teorii, ale również będziemy pisać kod, aby pokazać praktyczne zastosowanie omawianych technik.
Tematyka warsztatu:
Design Principles (Zasady projektowania):
DRY (Don't Repeat Yourself): Unikanie powtarzania kodu i promowanie reużywalności.
KISS (Keep It Simple, Stupid): Utrzymywanie kodu prostym i zrozumiałym.
YAGNI (You Aren't Gonna Need It): Implementowanie tylko tego, co jest obecnie potrzebne.
SOLID: Pięć zasad projektowania obiektowego:
Single Responsibility Principle (SRP): Każda klasa powinna mieć tylko jedną odpowiedzialność.
Open/Closed Principle (OCP): Klasy powinny być otwarte na rozszerzenie, ale zamknięte na modyfikację.
Liskov Substitution Principle (LSP): Obiekty w programie powinny być zastępowalne ich podtypami.
Interface Segregation Principle (ISP): Klienci nie powinni być zmuszani do zależności od interfejsów, których nie używają.
Dependency Inversion Principle (DIP): Moduły wyższego poziomu nie powinny zależeć od modułów niższego poziomu. Oba powinny zależeć od abstrakcji.
Design Patterns (Wzorce projektowe):
Creational Patterns (Wzorce kreacyjne): Singleton, Factory Method, Abstract Factory, Builder, Prototype.
Structural Patterns (Wzorce strukturalne): Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.
Behavioral Patterns (Wzorce behawioralne): Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor.
Wzorce projektowe na które się natknąć w swojej pracy:
Singleton: Zapewnia, że klasa ma tylko jedną instancję i zapewnia globalny punkt dostępu do tej instancji.
Factory Method: Definiuje interfejs do tworzenia obiektów, ale pozwala podklasom decydować, którą klasę instancjonować.
Abstract Factory: Umożliwia tworzenie rodzin powiązanych lub zależnych obiektów bez określania ich konkretnych klas.
Builder: Oddziela konstrukcję skomplikowanego obiektu od jego reprezentacji.
Prototype: Pozwala na tworzenie nowych obiektów poprzez klonowanie istniejących instancji.
Adapter: Umożliwia współpracę klas o niekompatybilnych interfejsach.
Bridge: Oddziela abstrakcję od jej implementacji, dzięki czemu obie mogą zmieniać się niezależnie.
Composite: Komponuje obiekty w struktury drzewiaste, umożliwiając traktowanie pojedynczych obiektów i ich kompozycji jednolicie.
Decorator: Dynamicznie dodaje nowe funkcje do obiektów bez zmiany ich klasy.
Facade: Dostarcza uproszczony interfejs do złożonego systemu.
Flyweight: Minimalizuje zużycie pamięci poprzez współdzielenie wspólnych stanów między wieloma obiektami.
Proxy: Zastępuje inny obiekt, aby kontrolować dostęp do niego.
Chain of Responsibility: Przekazuje żądanie przez łańcuch obiektów, aż któryś z nich obsłuży żądanie.
Command: Reprezentuje działanie jako obiekt, umożliwiając opóźnienie jego wykonania lub kolejkowanie.
Interpreter: Definiuje gramatykę i interpreter dla prostego języka.
Iterator: Umożliwia sekwencyjny dostęp do elementów kolekcji bez ujawniania jej wewnętrznej struktury.
Mediator: Definiuje obiekt, który enkapsuluje sposób, w jaki obiekty współpracują.
Memento: Przechowuje stan obiektu, aby można go było przywrócić później.
Observer: Definiuje zależność jeden-do-wielu między obiektami, tak aby zmiana w jednym obiekcie była automatycznie przekazywana do innych.
State: Pozwala obiektowi zmieniać swoje zachowanie, gdy zmienia się jego stan wewnętrzny.
Strategy: Definiuje rodzinę algorytmów, które mogą być używane zamiennie.
Template Method: Definiuje szkieleton algorytmu, pozwalając podklasom definiować pewne kroki.
Visitor: Dodaje nowe operacje do klas bez zmiany tych klas.
Format kursu: Warsztat będzie miał formę wykładów z praktycznymi przykładami kodu. Choć skupimy się na teorii, będziemy również pisać kod, aby pokazać, jak zastosować zasady i wzorce projektowe w praktyce. Materiały będą dostępne w postaci notatek, które możesz przyswajać według własnych preferencji.
Wersja Javy: Minimalna wymagana wersja Javy na Twoim komputerze to 8, ale wersja nie ma większego znaczenia, ponieważ będziemy rozmawiać głównie o zasadach i metodach pisania kodu.
Warsztat ten jest 10. warsztatem w ramach ścieżki Zajavka. Oczywiście możesz go realizować niezależnie od innych moich materiałów.
Czego nauczy się uczestnik?
Uczestnik warsztatu „Design Principles i Design Patterns” zdobędzie kompleksową wiedzę oraz praktyczne umiejętności związane z zasadami pisania czystego kodu i stosowaniem wzorców projektowych w Javie. Warsztat „Design Principles i Design Patterns” jest idealny dla osób, które chcą zrozumieć i efektywnie stosować zasady pisania dobrego i czystego kodu oraz wzorce projektowe w swoich projektach programistycznych. Niezależnie od Twojego poziomu doświadczenia, kurs ten dostarczy Ci niezbędnych narzędzi i wiedzy, abyś mógł lepiej projektować, implementować i utrzymywać swoje aplikacje.
Who this course is for:
- Początkujących programistów, którzy chcą nauczyć się podstaw zasad projektowania i wzorców projektowych, aby pisać lepszy kod.
- udentów informatyki i pokrewnych kierunków, którzy pragną zdobyć praktyczne umiejętności, które mogą być użyteczne w ich przyszłej karierze zawodowej.
- Architektów oprogramowania, którzy potrzebują narzędzi do projektowania systemów oraz komunikacji z zespołem
- Średniozaawansowanych i zaawansowanych deweloperów, którzy chcą pogłębić swoją wiedzę na temat zasad projektowania i wzorców oraz zastosować je w praktyce.
- Inżynierów QA i specjalistów ds. testowania, którzy chcą zrozumieć, jak projektowane są systemy.
Instructors
Zajavka to kompletny, profesjonalny i pasjonujący roczny kurs programowania. Zajavkę stworzyliśmy z myślą o tych, którzy pragną rozpocząć swoją intensywną przygodę z programowaniem i w ciągu 12 miesięcy osiągnąć poziom profesjonalnego programisty Javy. Zacznij naukę od bootcampu od podstaw i kontynuuj ją w warsztatach, które krok po kroku, intensywnie i w ciągu kilku miesięcy przygotują Cię do pełnienia roli profesjonalnego programisty Javy.
Jestem programistą Java z ponad 9 letnim doświadczeniem komercyjnym. Zajmuję się głównie technologiami Java i JVM oraz tworzeniem stron aplikacji webowych wykorzystujących technologie Java, Spring, Kafka. Mam również doświadczenie w tworzeniu aplikacji opartych o React. Stawiam przede wszystkim na ciągły rozwój osobisty, zdobywanie nowych umiejętności i podnoszenie jakości swojej pracy. W swojej karierze zawodowej spędziłem dużo czasu ucząc innych, prowadząc szkolenia i nagrywając materiały wideo w celach edukacyjnych.