Стан — це поведінковий патерн, що дозволяє динамічно змінювати поведінку об’єкта при зміні його стану.
Поведінки, які залежать від стану, переїзджають в окремі класи. Початковий клас зберігає посилання на один з таких об’єктів-станів та делегує йому роботу.
Застосування: Патерн Стан здебільшого використовують для перетвореннягроміздких стейт-машин, побудованих на операторах switch, в об’єкти.
Ознаки застосування патерна: Методи класу делегують роботу одному вкладеному об’єктові.
Концептуальний приклад
Цей приклад показує структуру патерна Стан, а саме — з яких класів він складається, які ролі ці класи виконують і як вони взаємодіють один з одним.
Після ознайомлення зі структурою, вам буде легше сприймати наступний приклад, що розглядає реальний випадок використання патерна в світі PHP.
index.php: Приклад структури патерна
Output.txt: Результат виконання
Життєвий приклад
Незважаючи на те, що концепція машини станів та патерна Стан досить широко відома, хороший і вдалий приклад з реального життя в контексті PHP, на жаль, мені ще не зустрічався.