State
8/8/25Less than 1 minute
Description
Thay đổi hành vi (behavior) của object khi trạng thái bên trong của object thay đổi
Example
Quản lí Order:
OrderManager:
class OrderManager { private OrderState $state; public function __construct(OrderState $state) { $this->setState($state); } public function setState(OrderState $state) { $this->state = $state; } public function nextProceed() { $this->state->nextProceed($this); } public function handle() { return $this->state->handle(); } }
OrderState:
interface OrderState { public function nextProceed(OrderManager $context); public function handle(); }
CreatedState:
class CreatedState implements OrderState { public function nextProceed(OrderManager $manager) { $manager->setState(new PaymentState()); } public function handle() { // do something } }
PaymentState:
class PaymentState implements OrderState { public function nextProceed(OrderManager $manager) { $manager->setState(new DoneState()); } public function handle() { // do something } }
DoneState:
class DoneState implements OrderState { public function nextProceed(OrderManager $manager) { } public function handle() { // do something } }