လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP decorator mode: အရာဝတ်ထု -oriented programming အတွက်ပြောင်းလွယ်ပြင်လွယ် extension နှင့်လျှောက်လွှာ

PHP decorator mode: အရာဝတ်ထု -oriented programming အတွက်ပြောင်းလွယ်ပြင်လွယ် extension နှင့်လျှောက်လွှာ

M66 2025-07-03

PHP decorator mode: အရာဝတ်ထု -oriented programming အတွက်ပြောင်းလွယ်ပြင်လွယ် extension နှင့်လျှောက်လွှာ

Object-Oriented Programming တွင်အဆောက်အအုံဒီဇိုင်းပုံစံအနေဖြင့်အလှဆင်ပုံစံဖြစ်သောအလှဆင်ပုံစံဖြင့်ရှိပြီးသားအရာဝတ်ထုများ၏လုပ်ဆောင်မှုကိုမူလကုဒ်၏မူလကုဒ်ကိုမပြုပြင်ဘဲတိုးချဲ့ရန်ပြောင်းလွယ်ပြင်လွယ်နည်းလမ်းဖြစ်သည်။ ဤဆောင်းပါးမှတစ်ဆင့် PHP တွင်အလှဆင်ထားသောပုံစံကိုမည်သို့ကျင့်သုံးရမည်ကိုပိုမိုနက်ရှိုင်းစွာနားလည်နိုင်ပြီးတိကျသောသင်္ကေတများမှတစ်ဆင့်အကောင်အထည်ဖော်မှု၏အဓိကအယူအဆများကိုလေ့လာရန်ဖြစ်သည်။

အလှဆင်စနစ်ကဘာလဲ?

Decorator mode သည်၎င်းတို့၏ဖွဲ့စည်းပုံသို့မဟုတ်လုပ်ဆောင်မှုများကိုမပြောင်းလဲဘဲ "ထုပ်ပိုးခြင်း" ကို "ထုပ်ခြင်း" ဖြင့်ပြုလုပ်ထားသောအရာဝတ်ထုအသစ်များသို့အင်္ဂါရပ်အသစ်များသို့တက်ကြွစွာထည့်သွင်းရန်ခွင့်ပြုသည်။ ဤပုံစံသည် "ပွင့်လင်း။ ပိတ်ထားသောနိယာမ" ကိုလိုက်နာပြီး,

အလှဆင်စနစ်ကိုဘယ်လိုအကောင်အထည်ဖော်မလဲ။

PHP တွင်အလှဆင်ထားသောပုံစံကိုအကောင်အထည်ဖော်ခြင်းသည်အလှဆင်သူနှင့်အလှဆင်ထားသောအရာဝတ်ထုအကြားစာချုပ်ကိုသတ်မှတ်ရန် interface သို့မဟုတ် abstract class ကိုသုံးရန်လိုအပ်သည်။ ထို့နောက်ကျွန်ုပ်တို့သည်ဤဒီဇိုင်းပုံစံကိုတိကျသောဥပမာတစ်ခုဖြင့်မည်သို့အကောင်အထည်ဖော်ရမည်ကိုပြလိမ့်မည်။

ဥပမာ - စာသားအယ်ဒီတာသင်တန်းကိုအကောင်အထည်ဖော်ပါ

စာသားအကြောင်းအရာများကိုပြသရန်အတွက်အခြေခံကျသော ပြသထားသော နည်းလမ်းကိုအကောင်အထည်ဖော်သည့်ရိုးရှင်းသောစာသားတည်းဖြတ်သူအတန်းအစား text ည့်သည် တစ် ဦး ရှိသည်ဆိုပါစို့။

 interface TextEditorInterface {
    public function display();
}

class TextEditor implements TextEditorInterface {
    protected $text;
    public function __construct($text) {
        $this->text = $text;
    }

    public function display() {
        echo $this->text;
    }
}

ဤအခြေခံအကောင်အထည်ဖော်မှုတွင်စာသားတည်းဖြတ်သူသည်စာသားကိုပြသသည်။ font style များသို့မဟုတ်အရောင်များကဲ့သို့သောအင်္ဂါရပ်အသစ်များထည့်လိုပါကကော။

အလှဆင်ထားသော interface နှင့်သတ်သတ်မှတ်မှတ်အလှဆင်ထားသောအတန်းကိုဖန်တီးပါ

Texted ည့်သည်သင်တန်းများအတွက်အင်္ဂါရပ်အသစ်များထည့်သွင်းရန်ကျွန်ုပ်တို့သည် texteditorinterface မှအမွေဆက်ခံသည့်အလှဆင် interface textDecoratoratoratoratoratoratoratoratoratoratoratoratoratoratoratorator ကို သတ်မှတ်ပြီး တိကျသောအလှဆင်စာသင်ခန်းများအတွက် Unified Interface ကန့်သတ်ချက်များပေးထားသည်။

 interface TextDecoratorInterface extends TextEditorInterface {
}

ထို့နောက်ကျွန်ုပ်တို့သည် font style ကိုပြောင်းလဲစေသောတိကျသောအလှဆင်အတန်းကိုဖန်တီးသည်။

 class FontStyleDecorator implements TextDecoratorInterface {
    protected $textEditor;

    public function __construct(TextEditorInterface $textEditor) {
        $this->textEditor = $textEditor;
    }

    public function display() {
        echo "" . $this->textEditor->display() . "";
    }
}

ဤအချိန်တွင်ကျွန်ုပ်တို့သည်စာသား၏ display style ကိုပြောင်းလဲနိုင်သော font style decorator ကိုအောင်မြင်စွာဖန်တီးနိုင်ခဲ့သည်။ ထို့နောက်ကျွန်ုပ်တို့သည်စာသားကိုအရောင်များထည့်ရန်အခြားအရောင်အလှဆင်ခြင်းကိုဖန်တီးသည်။

 class ColorDecorator implements TextDecoratorInterface {
    protected $textEditor;

    public function __construct(TextEditorInterface $textEditor) {
        $this->textEditor = $textEditor;
    }

    public function display() {
        echo "" . $this->textEditor->display() . "";
    }
}

functional extension ကိုအောင်မြင်ရန်ပေါင်းစပ်ထားသောအလှဆင်အတန်း

ကွဲပြားခြားနားသောအလှဆင်အတန်းများကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်မူရင်း စာပို့သူ အတန်းကိုပြုပြင်မွမ်းမံခြင်းမရှိဘဲမတူညီသောလုပ်ဆောင်မှုများကိုပြောင်းလဲနိုင်သည်။ အောက်ဖော်ပြပါကုဒ်သည်အလှဆင်ထားသောအယ်ဒီတာကိုပေါင်းစပ်ခြင်းဖြင့်စာသားတည်းဖြတ်သူနှင့်အရောင်များကိုမည်သို့ထည့်သွင်းရမည်ကိုပြသသည်။

 $textEditor = new TextEditor("Hello World!");
$fontStyleDecorator = new FontStyleDecorator($textEditor);
$colorDecorator = new ColorDecorator($fontStyleDecorator);

$colorDecorator->display(); // font စတိုင်နှင့်အရောင်နှင့်အတူ output စာသား

ဤကုဒ်သည်မူလကုဒ်ကိုမပြောင်းလဲဘဲအလှဆင်ကွင်းပြင်မှတဆင့်အရာဝတ်ထုသို့အပိုဆောင်းလုပ်ဆောင်မှုကိုမည်သို့ထည့်သွင်းရမည်ကိုပြသသည်။

အကျဉ်းချုပ်

decorator ပုံစံသည် developer များကရှိပြီးသားကုဒ်ကိုပြုပြင်မွမ်းမံခြင်းမရှိဘဲ developer များအနေဖြင့်အရာဝတ်ထုအသစ်များသို့တက်ကြွစွာထည့်သွင်းရန်ခွင့်ပြုသည့်အစွမ်းထက်သောဒီဇိုင်းပုံစံဖြစ်သည်။ PHP တွင်အလှဆင်ထားသော decorator mode သည် flexible function expansion ကိုရရှိရန်အတွက်ကုဒ်ပြောင်းလွယ်ပြင်လွယ်မှုနှင့်ထိန်းသိမ်းမှုကိုသေချာစေရန်ကူညီနိုင်သည်။ ဤဆောင်းပါး၏ရှင်းပြချက်နှင့်သင်္ကေတများမှတဆင့်သင်အလှဆင်ထားသောပုံစံ၏လျှောက်လွှာကိုအသုံးပြုခြင်းကိုပိုမိုနားလည်သင့်ပြီးအမှန်တကယ်စီမံကိန်းများအတွက်ဤဒီဇိုင်းပုံစံကိုပြောင်းလွယ်ပြင်လွယ်ရှိနိုင်သည်။