Amaliyotda qo'llagan eng murakkab dizayn shabloni misolini keltira olasizmi?
sobes.tech AI
AIdan javob
PHP-da ishlagan eng murakkab dizayn shablonlaridan biri "Holat" (State) shablonidir. Bu shablon ob'ektga uning ichki holatiga bog'liq ravishda xulq-atvorini o'zgartirish imkonini beradi, uning sinfini o'zgartirmasdan.
Misol uchun: men buyurtma tizimi bo'lgan loyiha bilan ishladim, bu yerda buyurtma turli holatlarda bo'lishi mumkin edi (yangi, to'langan, yuborilgan, bekor qilingan). Ko'p shart operatorlari o'rniga, har bir holatni umumiy interfeysni amalga oshiradigan alohida sinf sifatida amalga oshirdim va buyurtmaning holatini dinamik ravishda o'zgartirdim.
interface OrderState {
public function proceed(OrderContext $order);
}
class NewOrderState implements OrderState {
public function proceed(OrderContext $order) {
// "to'langan" holatiga o'tish logikasi
$order->setState(new PaidOrderState());
}
}
class PaidOrderState implements OrderState {
public function proceed(OrderContext $order) {
// "yuborilgan" holatiga o'tish logikasi
$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);
}
}
// Foydalanish
$order = new OrderContext(new NewOrderState());
$order->proceed(); // "to'langan" holatiga o'tadi
$order->proceed(); // "yuborilgan" holatiga o'tadi
Ushbu shablon murakkab, chunki u OOP tamoyillarini yaxshi tushunishni va holatlarni boshqarish uchun to'g'ri sinf dizaynini talab qiladi, ammo kodning o'qilishi va kengaytirilishini sezilarli darajada yaxshilaydi.