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 များသို့မဟုတ်အရောင်များကဲ့သို့သောအင်္ဂါရပ်အသစ်များထည့်လိုပါကကော။
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() . "";
}
}
ကွဲပြားခြားနားသောအလှဆင်အတန်းများကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်မူရင်း စာပို့သူ အတန်းကိုပြုပြင်မွမ်းမံခြင်းမရှိဘဲမတူညီသောလုပ်ဆောင်မှုများကိုပြောင်းလဲနိုင်သည်။ အောက်ဖော်ပြပါကုဒ်သည်အလှဆင်ထားသောအယ်ဒီတာကိုပေါင်းစပ်ခြင်းဖြင့်စာသားတည်းဖြတ်သူနှင့်အရောင်များကိုမည်သို့ထည့်သွင်းရမည်ကိုပြသသည်။
$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 ကိုရရှိရန်အတွက်ကုဒ်ပြောင်းလွယ်ပြင်လွယ်မှုနှင့်ထိန်းသိမ်းမှုကိုသေချာစေရန်ကူညီနိုင်သည်။ ဤဆောင်းပါး၏ရှင်းပြချက်နှင့်သင်္ကေတများမှတဆင့်သင်အလှဆင်ထားသောပုံစံ၏လျှောက်လွှာကိုအသုံးပြုခြင်းကိုပိုမိုနားလည်သင့်ပြီးအမှန်တကယ်စီမံကိန်းများအတွက်ဤဒီဇိုင်းပုံစံကိုပြောင်းလွယ်ပြင်လွယ်ရှိနိုင်သည်။