ПАТТЕРН СОСТОЯНИЕ PHP

Паттерн состояние (State) в PHP - это поведенческий паттерн проектирования, который позволяет изменять поведение объекта в зависимости от его состояния.

В данном паттерне объекты имеют внутреннее состояние, которое может изменяться, и на основе текущего состояния объекта происходят различные действия. Например, можно реализовать паттерн состояние для объекта "Заказ", который может находиться в состоянии "Новый", "Ожидает оплату", "Доставляется" и т.д.

Для реализации паттерна состояние в PHP можно использовать интерфейсы и абстрактные классы. Каждое состояние объекта реализуется в виде отдельного класса, который наследуется от абстрактного класса State:

abstract class State { public abstract function handle(): string;}

Конкретные классы состояний должны реализовывать абстрактный класс State:

class NewState extends State { public function handle(): string { return "Заказ в новом состоянии"; }} class PaymentState extends State { public function handle(): string { return "Ожидание оплаты"; }} class DeliveryState extends State { public function handle(): string { return "Доставка заказа"; }}

Далее необходимо создать класс контекста Context, содержащий ссылку на текущее состояние:

class Context { private $state; public function __construct(State $state) { $this->state = $state; } public function setState(State $state) { $this->state = $state; } public function getState(): State { return $this->state; } public function handle(): string { return $this->state->handle(); }}

Теперь можно создать объекты состояний и контекста и использовать их:

$newState = new NewState();$paymentState = new PaymentState();$deliveryState = new DeliveryState(); $context = new Context($newState);echo $context->handle(); // Выводит: "Заказ в новом состоянии" $context->setState($paymentState);echo $context->handle(); // Выводит: "Ожидание оплаты" $context->setState($deliveryState);echo $context->handle(); // Выводит: "Доставка заказа"

Паттерны проектирования для начинающих с примерами на PHP

Паттерны проектирования API

Объектно-ориентированное программирование и паттерны проектирования в PHP - 1

Нейронная сеть на PHP

Важнейший шаблон программирования из 23-х

Шаблоны проектирования микросервисов на примере Авито / Фрол Крючков (Авито)

System Design and Architecture: продвинутые паттерны

Состояние (state). Шаблоны проектирования.

State - Шаблон проектирования Состояние

Паттерн Фабрика на реальном примере в PHP

Реклама
Новое
Реклама