Wzorce projektowe w PHP

narzędzia na stole

Ten wpis rozpoczyna serię postów o wzorcach projektowych. Pragnę przybliżyć czym w ogóle są oraz jak podzieliłem wpisy dedykowane już konkretnym rozwiązaniom.

Uważam, że wzorców projektowych trzeba nauczyć się jak najszybciej w swojej karierze programistycznej i zacząć je stosować. U mnie to wygląda różnie, ale coraz częściej dostrzegam ich siłę i staram się wykorzystywać je w odpowiednich miejscach. Nie wszyscy jednak powinni od razu siadać do tego tematu.

Przyznam, że kilkukrotnie z wielu źródeł próbowałem się ich nauczyć. Was też zachęcam do sprawdzania różnych materiałów. Niektórym mogą przypaść do gustu moje wpisy, a innym nie, ale co jest pewne to chcąc być dobrym developerem, nie wolno odpuścić tego zagadnienia. Sam czasem odsyłam do innych źródeł, które uważam że są sensowne. Każde treści mogą być wartościowe, bo są rozszerzone o wiedzę i doświadczenie autora.

Zanim jednak temat wzorców – co trzeba wiedzieć wcześniej? Żeby dobrze przyswoić konkretne wzorce projektowe na pewno trzeba mieć już jakieś doświadczenie w programowaniu obiektowym oraz znać i rozumieć zasady SOLID. Ja dodatkowo odnoszę się do przykładów i implementacji w PHP, więc głównie do osób znających ten język kieruję tę serię.

Jedna dodatkowa uwaga i zaczynamy! Na początku wiele wzorców będzie pasowało do prawie wszystkich problemów – oznacza to wtedy, że niekoniecznie dobrze rozumie się ich istotę i zamiast rozwiązywać konkretny problem można sobie nieco utrudnić dalszy rozwój i utrzymanie kodu. Dobrze przeczekać ten okres i nie wymyślać problemu tylko po to żeby użyć danego wzorca projektowego. Nie oznacza to że nie trzeba zacząć ich używać, ponieważ w końcu po to powstały.

Czym są wzorce projektowe?

Wzorzec projektowy to sposób na rozwiązanie często powtarzającego się problemu projektowego w aplikacjach. Nie jest to jednak algorytm, który daje rozwiązanie na tacy. To bardziej zbiór uniwersalnych zasad wspierających dobre praktyki. To dlatego może zostać źle zaimplementowany, bo trzeba dopasować go do potrzeb, a nie przepisać jeden do jeden. Ale to dzięki temu znajdzie zastosowanie w wielu miejscach, bo ma świetny poziom abstrakcji. Dla mnie esencją wzorców projektowych jest to, że pomagają utrzymać kod w dobrej kondycji i ustrzec się w przyszłości wielu problemów, bo są sprawdzonymi rozwiązaniami.

Obiektowe wzorce projektowe można podzielić na trzy grupy:

  • wzorce kreacyjne – odpowiedzialne za stworzenie konkretnych obiektów;
  • wzorce strukturalne – definiujące strukturę i powiązanie interfejsów;
  • wzorce behawioralne – opisujące zachowania obiektów.

Struktura wpisu

Każdy wzorzec projektowy to jeden wpis. Posiada zdjęcie prezentujące diagram UML omawianego przykładu i ogólny opis. Dodatkowo przedstawiam problem i rozwiązanie z przykładową implementacją w PHP, a także plusy i minusy danego wzorca projektowego. Na samym końcu jest też blok opinii, w którym to pokrótce podsumowuję i oceniam wzorzec. Jest to miejsce na moją subiektywną ocenę. Taki blok to fajna opcja na przyszłość żeby wrócić i szybko sobie odświeżyć jakie są wady i zalety danego podejścia. Każdy z Was również może wyrazić opinię w komentarzu – do czego zachęcam.

O jakich wzorcach…

Nie jest ich w gruncie rzeczy tak mało, a ja postaram się przedstawić ich jak najwięcej. Oczywiście tylko te które mogą być użyte w aplikacjach webowych w PHP i mam na myśli wzorce programowania obiektowego.

Raczej używam nazw anglojęzycznych, bo też tak pisze się kod na co dzień, ale jeśli istnieje jakieś sensowne tłumaczenie to też chętnie podaję. Czasem jestem pod wrażeniem jak świetnie jednym czy dwoma słowami są one nazwane. W zasadzie nazwa jednoznacznie określa do czego służą – stąd też warto ją rozumieć.

Linki do opisanych wzorców projektowych

Wzorce kreacyjne

Wzorce strukturalne

Krystian Żądło
Programista PHP i właściciel marki Koddlo. Pasjonat czystego kodu i dobrych praktyk programowania obiektowego. Prywatnie fan angielskiej piłki nożnej, dobrego humoru oraz podcastów.