
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.