Niedawno postanowiłem stworzyć bibliotekę na githubie z wzorcami projektowymi w PHP. Sukcesywnie dodaje tam nowe wzorce wraz z testami, które w momencie pisania tego posta stanowią 91% pokrycia kodu. Jeśli chcesz zostać dobrym programistą i pisać kod, który jest zdatny do ponownego użycia zamknięty na modyfikację, ale łatwy do rozszerzenia pownieneś zacząć interesować się wzorcami obiektowymi.

Obecnie zaimplementowałem takie wzorce jak:

  • Behawioralne(czynnościowe)
    • Adapter – dostosowuje interfejs klasy do nowych warunków bez modyfikacji oryginalnej klasy.
    • Łańcuch zobowiązań – Pozwala by żadanie zostało przetworzone przez rózne handlery w zależności od typu
    • Pamiątka – pozwala zachować stan obiektu bez naruszania enkapsulacji
    • Obserwator – Definuje relacje jeden do wiele pomiędzy obiektami i w przypadku gdy jeden obiekt się zmieni informuje on zależne obiekty, które aktualizują swój stan
    • Stan – pozwala na zmianę zachowania obiektu poprzez zmianę stanu wewnętrznego obiektu
    • Strategia – pozwala stworzyc rodzinę algorytmów i w łatwy sposób je wymieniać podczas wykonywania aplikacji/skryptu
  • Kreacyjne(konstrukcyjne)
    • Fabryka – definuje interfejs do tworzenai obiektu, ale pozwala podklasom decydować, którą klasę zainicjalizować
  • Strukturalne
    • Dekorator – pozwala dodać nowe możliwości do klasy bez modyfikowania oryginalnej.

Wkrótce postaram zaimplementować takie wzorce jak:

Fabryka abstrakcyjna, Budowniczy, Prototyp, Mostek, Kompozyt, Fasada, Pyłek, Pośrednik, Polecenie, Interpreter, Mediator, Wizytor

 

Odnośniki do biblioteki:

packagist.

github

instalacja przez composer-a

composer require rpodwika/designpatterns