Magento 2 to jeden z najbardziej wzorcowych (dosłownie) frameworków PHP. Jego architektura jest niemal podręcznikowym przykładem zastosowania wzorców GoF. Jeśli rozumiesz wzorce omówione w tej serii, czytanie kodu Magento staje się znacznie łatwiejsze – zamiast „skąd się to bierze” masz „aha, to Factory” albo „to Observer przez di.xml”. Pokazuję gdzie konkretnie każdy wzorzec żyje w platformie.
Command enkapsuluje operację jako obiekt – z możliwością kolejkowania, logowania i cofania. Chain of Responsibility przekazuje żądanie przez łańcuch handlerów, gdzie każdy może je obsłużyć lub puścić dalej. Oba wzorce oddzielają „kto zleca” od „kto wykonuje”, co daje dużą elastyczność w układaniu logiki aplikacji.
Observer i Strategy to dwa z najczęściej używanych wzorców behawioralnych. Observer buduje luźno powiązany system zdarzeń – jeden obiekt zmienia stan, wiele innych reaguje. Strategy wymienia algorytmy jak klocki – ta sama operacja, różne sposoby wykonania. Oba wzorce realizują zasadę Open/Closed z SOLID.
Adapter i Facade to dwa wzorce które rozwiązują problem złożoności interfejsów – ale z różnych stron. Adapter sprawia że niekompatybilny interfejs staje się kompatybilny. Facade upraszcza złożony interfejs do prostego. Oba pojawiają się często przy integracji z zewnętrznymi bibliotekami i API.
Decorator i Proxy to dwa wzorce strukturalne które działają podobnie – oba opakowują obiekt i implementują ten sam interfejs. Różni je intencja: Decorator dodaje nową funkcjonalność, Proxy kontroluje dostęp do obiektu. Subtelna różnica, ale fundamentalna dla prawidłowego zastosowania.
Singleton i Builder to dwa bardzo różne wzorce kreacyjne. Singleton jest jednym z najkrótszych wzorców GoF i jednym z najczęściej nadużywanych. Builder rozwiązuje zupełnie inny problem – budowanie złożonych obiektów krok po kroku, gdy konstruktor z dziesiątkami parametrów staje się nieczytelny. Pokazuję oba z przykładami i bez owijania w bawełnę mówię kiedy Singleton to zły pomysł.
Factory Method i Abstract Factory to dwa najczęściej mylone wzorce kreacyjne. Oba dotyczą tworzenia obiektów, ale rozwiązują różne problemy. Factory Method pyta „który podtyp obiektu stworzyć”. Abstract Factory pyta „jaką rodzinę powiązanych obiektów stworzyć”. Pokazuję oba od zera w PHP z przykładami które ilustrują różnicę.
Wzorce projektowe to sprawdzone rozwiązania często powtarzających się problemów w projektowaniu oprogramowania. Nie są to gotowe biblioteki ani fragmenty kodu do skopiowania – to szablony myślenia, które pomagają projektować elastyczny, testowalny i czytelny kod. W tej serii omówię najważniejsze wzorce z katalogu Gang of Four z przykładami w czystym PHP.
Chain of Responsibility pozwala przekazywać żądanie przez łańcuch handlerów, gdzie każdy może je obsłużyć lub przekazać dalej. Eliminuje rozbudowane if-else i switch decydujące „kto powinien to obsłużyć”. W Magento 2 ten wzorzec pojawia się w pipeline przetwarzania płatności, middleware HTTP i systemie reguł cenowych. Pokazuję implementację od zera i praktyczne zastosowania.
Proxy to wzorzec który stawia pośrednika między klientem a prawdziwym obiektem. Pośrednik implementuje ten sam interfejs co oryginał, więc klient nie widzi różnicy – a Proxy może robić coś dodatkowego: opóźniać inicjalizację, kontrolować dostęp, logować wywołania lub keszować wyniki. W Magento 2 Proxy jest generowane automatycznie dla klas z ciężkimi konstruktorami.
