Stan to behawioralny wzorzec projektowy pozwalający zmieniać zachowanie obiektu w odpowiedzi na zmianę jego wewnętrznego stanu.
Wzorzec Stan zakłada ekstrakcję zachowań odnoszących się do stanu obiektu do osobnych klas odpowiadających jego poszczególnym stanom. Pierwotny obiekt wówczas deleguje pracę instancjom tych klas, zamiast wykonywać ją samodzielnie.
Przykłady użycia: Wzorzec Stan jest czasem stosowany w PHP w celu przekształcania obszernych i skomplikowanych maszyn stanów opartych o instrukcję switch w obiekty.
Identyfikacja: Wzorzec Stan można poznać po obecności metod zmieniających swoje zachowanie zależnie od stanu obiektu, sterowanego z zewnątrz.
Przykład koncepcyjny
Poniższy przykład ilustruje strukturę wzorca Stan ze szczególnym naciskiem na następujące kwestie:
Z jakich składa się klas?
Jakie role pełnią te klasy?
W jaki sposób elementy wzorca są ze sobą powiązane?
Poznawszy strukturę wzorca będzie ci łatwiej zrozumieć następujący przykład, oparty na prawdziwym przypadku użycia PHP.
index.php: Przykład koncepcyjny
Output.txt: Wynik działania
Przykład z prawdziwego życia
Mimo, że koncepcje maszyn stanów i samego wzorca Stan są popularne wśród twórców oprogramowania, nie przychodzi mi do głowy żaden przyzwoity przykład zastosowania Stanu w prawdziwej aplikacji PHP.
Jeśli jednak udało ci się zastosować ten wzorzec w swoim projekcie, śmiało podziel się swoimi spostrzeżeniami na forum lub przez email: support@refactoring.guru. Dziękuję!