Можете ли да дадете пример за най-сложния модел на проектиране, който сте прилагали на практика?
sobes.tech AI
Отговор от AI
Един от най-сложните шаблони за проектиране, с които съм работил в PHP, е шаблонът "Състояние" (State). Този шаблон позволява на обект да променя поведението си в зависимост от вътрешното си състояние, без да променя своя клас.
Пример за използване: имах проект с система за поръчки, където поръчката можеше да бъде в различни състояния (нова, платена, изпратена, анулирана). Вместо множество условни оператори, реализирах всяко състояние като отделен клас, който реализира общ интерфейс, и динамично сменях състоянието на поръчката.
interface OrderState {
public function proceed(OrderContext $order);
}
class NewOrderState implements OrderState {
public function proceed(OrderContext $order) {
// логика за преминаване към "платена"
$order->setState(new PaidOrderState());
}
}
class PaidOrderState implements OrderState {
public function proceed(OrderContext $order) {
// логика за преминаване към "изпратена"
$order->setState(new ShippedOrderState());
}
}
class OrderContext {
private $state;
public function __construct(OrderState $state) {
$this->state = $state;
}
public function setState(OrderState $state) {
$this->state = $state;
}
public function proceed() {
$this->state->proceed($this);
}
}
// Използване
$order = new OrderContext(new NewOrderState());
$order->proceed(); // преминава към "платена"
$order->proceed(); // преминава към "изпратена"
Този шаблон е сложен, защото изисква добро разбиране на принципите на ООП и правилно проектиране на класове за управление на състоянията, но значително подобрява четливостта и разширяемостта на кода.