Wzorce projektowe to sprawdzone rozwiązania typowych problemów w architekturze oprogramowania. Chociaż mają już swoje lata, w świecie TypeScript i nowoczesnego frontendu są wciąż niezwykle istotne, pomagając budować skalowalne i łatwe w utrzymaniu aplikacje.
Stworzyłem repozytorium typescript-design-patterns, które służy jako praktyczny poligon doświadczalny dla wszystkich 23 wzorców zdefiniowanych przez Gang of Four (GoF).
Co znajdziesz w repozytorium?
Każdy wzorzec został zaimplementowany w sposób czytelny, z naciskiem na praktyczne zastosowanie w domenach takich jak e-commerce czy logistyka. Znajdziesz tam konkretne przykłady: zamówień, wysyłek, powiadomień i zarządzania produktami.
Struktura projektu
Repozytorium jest zorganizowane w przejrzysty sposób, dzieląc wzorce na trzy główne kategorie zgodnie z klasyfikacją GoF:
typescript-design-patterns/
├── creational/ # Wzorce kreacyjne (tworzenie obiektów)
│ ├── factory-method/
│ ├── abstract-factory/
│ ├── builder/
│ ├── prototype/
│ └── singleton/
├── structural/ # Wzorce strukturalne (składanie obiektów)
│ ├── adapter/
│ ├── composite/
│ ├── decorator/
│ ├── facade/
│ └── proxy/
└── behavioral/ # Wzorce behawioralne (interakcje między obiektami)
├── chain-of-responsibility/
├── command/
├── iterator/
├── mediator/
├── memento/
├── observer/
├── state/
├── strategy/
└── template-method/
Podział wzorców
W projekcie znajdziesz implementacje następujących kategorii:
Wzorce Kreacyjne (Creational)
Skupiają się na mechanizmach tworzenia obiektów, starając się tworzyć je w sposób odpowiedni do sytuacji.
- Factory Method - tworzenie obiektów bez określania ich dokładnej klasy.
- Abstract Factory - tworzenie rodzin powiązanych obiektów.
- Builder - etapowe budowanie złożonych obiektów.
- Prototype - klonowanie istniejących obiektów.
- Singleton - gwarancja jednej instancji klasy.
Wzorce Strukturalne (Structural)
Wyjaśniają, jak składać obiekty i klasy w większe struktury, zachowując przy tym elastyczność i wydajność.
- Adapter - współpraca obiektów o niekompatybilnych interfejsach.
- Composite - traktowanie pojedynczych obiektów i ich grup w ten sam sposób.
- Decorator - dynamiczne dodawanie nowych zachowań do obiektów.
- Facade - uproszczony interfejs do złożonego podsystemu.
- Proxy - obiekt zastępczy kontrolujący dostęp do oryginału.
Wzorce Behawioralne (Behavioral)
Zajmują się algorytmami i przydzielaniem odpowiedzialności pomiędzy obiektami.
- Chain of Responsibility - przekazywanie żądań wzdłuż łańcucha obsługujących.
- Command - zamiana żądania w samodzielny obiekt.
- Iterator - sekwencyjny dostęp do elementów kolekcji.
- Mediator - ograniczenie bezpośrednich powiązań między komponentami.
- Memento - przywracanie poprzedniego stanu obiektu.
- Observer - subskrypcja i powiadamianie o zdarzeniach.
- State - zmiana zachowania obiektu wraz ze zmianą jego stanu.
- Strategy - wymienne algorytmy wewnątrz klasy.
- Template Method - definicja szkieletu algorytmu w klasie bazowej.
Porównanie podobnych wzorców
Często wzorce wyglądają podobnie na pierwszy rzut oka. W README repozytorium przygotowałem zestawienie, które pomaga je rozróżnić:
| Para wzorców | Kluczowa różnica |
|---|---|
| State vs Strategy | State zmienia się sam; Strategy jest wymieniana przez klienta. |
| Command vs Strategy | Command zamienia akcję w obiekt (undo, kolejka); Strategy podmienia algorytmy. |
| Decorator vs Proxy | Decorator dodaje zachowanie (klient kontroluje stos); Proxy kontroluje dostęp. |
| Facade vs Mediator | Facade: klient → podsystem; Mediator: dwukierunkowy, komponenty go znają. |
Jak zacząć?
Repozytorium jest gotowe do uruchomienia. Każdy wzorzec posiada własny skrypt startowy:
npm install
npm run strategy
npm run observer
npm run factory-method
Link do repozytorium
Pełny kod źródłowy wraz z opisami każdego wzorca znajdziesz na moim GitHubie:
👉 GitHub: typescript-design-patterns
Zachęcam do gwiazdkowania repozytorium i używania go jako ściągi w codziennej pracy!