စွယ်စုံကျမ်းသည်မှတ်ဉာဏ်အသုံးပြုမှုကိုလျှော့ချရန်နှင့်အရာဝတ်ထုများကိုမျှဝေခြင်းဖြင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်ဒီဇိုင်းပြုလုပ်ထားသောဖွဲ့စည်းတည်ဆောက်ပုံဆိုင်ရာဒီဇိုင်းပုံစံဖြစ်သည်။ ဤနည်းလမ်းသည်မြင်ကွင်းများအတွက်အလားတူအရာဝတ်ထုများစွာနှင့်အတူသင့်တော်သည်။ အများပြည်သူဆိုင်ရာအရာဝတ်ထုများ၏အများပြည်သူအခြေအနေကိုမျှဝေခြင်းအားဖြင့်၎င်းသည်မှတ်ဥာဏ်ကိုကယ်တင်နိုင်ရုံသာမကအရာဝတ်ထုများ၏ဖန်တီးမှုနှင့်ဖျက်ဆီးခြင်းကြောင့်ဖြစ်ရတဲ့ overhead ကိုလျှော့ချနိုင်သည်။
EncyClopedia Mode ၏အဓိကအယူအဆမှာအရာဝတ်ထုများကိုပြည်တွင်းပြည်နယ်များ (အခ်ါဂုဏ်သတ္တိများ) နှင့်ပြင်ပပြည်နယ်များ (ပြင်ပ attribute များ) ကိုခွဲခြားရန်ဖြစ်သည်။ ပြည်တွင်းပြည်နယ်သည်မပြောင်းလဲဘဲအရာဝတ်ထုမျိုးစုံမှမျှဝေနိုင်သည်။
ပြည်တွင်းပြည်နယ်ကိုမျှဝေခြင်းအားဖြင့်အရာဝတ်ထုအရေအတွက်သိသိသာသာလျှော့ချနိုင်သည်။ ထို့ကြောင့် Memory စားသုံးမှုကိုလျှော့ချနိုင်သည်။ ပြင်ပပြည်နယ်ကို dynamically passed နှင့်အသုံးပြုသောအခါပြောင်းလဲသွားတယ်။
Xiangyuan မော်ဒယ်တွင်အောက်ပါအခြေအနေများတွင်ခိုင်မာသော application တန်ဖိုးရှိသည်။
စနစ်အတွင်းရှိအလားတူအရာဝတ်ထုများစွာရှိသည့်အခါဤအရာဝတ်ထုများ၏အတွင်းပိုင်းအခြေအနေကိုမျှဝေရန်စွယ်စုံကျမ်းသုံးခြင်းစနစ်ကို အသုံးပြု. မှတ်ဉာဏ်သုံးစွဲမှုကိုသိသိသာသာလျှော့ချနိုင်သည်။
အရာဝတ်ထုတစ်ခု၏ဂုဏ်သတ္တိများကိုပြည်တွင်းနှင့်ပြင်ပပြည်နယ်များအဖြစ်ခွဲခြားနိုင်သည့်အခါပြည်တွင်းပြည်နယ်ကိုမျှဝေနိုင်သည်။ ပြင်ပပြည်နယ်ကိုအရာဝတ်ထု၏ပတ် 0 န်းကျင်ကဆုံးဖြတ်သည်။
PHP ရှိ Weat Mode ကိုအကောင်အထည်ဖော်ရန်အတွက်အခြေခံအဆင့်များသည်အောက်ပါအတိုင်းဖြစ်သည် -
ပထမ ဦး စွာ Shared Shared Shared Object Objects ကိုပေးရန်နှင့်ထောက်ပံ့ရန်မျှဝေထားသောအရာဝတ်ထုစက်ရုံကိုဖန်တီးပါ။
class FlyweightFactory {
private $flyweights = [];
public function getFlyweight($key) {
if (!isset($this->flyweights[$key])) {
$this->flyweights[$key] = new ConcreteFlyweight($key);
}
return $this->flyweights[$key];
}
}
ထို့နောက် Meta အရာဝတ်ထုမှ interface ကိုသတ်မှတ်ပါ။
interface Flyweight {
public function operation();
}
ထို့နောက်တိကျသောပျော်ရွှင်မှုဆိုင်ရာအရာဝတ်ထုတစ်ခုကိုဖန်တီးပြီးမျှဝေထားသောပြည်တွင်းနှင့်ပြင်ပပြည်နယ်များကိုအကောင်အထည်ဖော်ပါ။
class ConcreteFlyweight implements Flyweight {
private $key;
public function __construct($key) {
$this->key = $key;
}
public function operation() {
// သတ်သတ်မှတ်မှတ်စစ်ဆင်ရေးယုတ္တိဗေဒ
}
}
GAME Development Development ကိုဥပမာတစ်ခုအနေနှင့်ယူပြီးဇာတ်ကောင်မန်နေဂျာသည်ဇာတ်ကောင်အရာဝတ်ထုအမြောက်အများကိုစီမံရန်လိုအပ်သည်ဆိုပါစို့။ ဇာတ်ကောင်အရာဝတ်ထုတစ်ခုတွင်အချို့သော attribute များသည်အလုပ်အကိုင်နှင့်ကျွမ်းကျင်မှုများကဲ့သို့သောပုံသေများကိုသတ်မှတ်ထားပြီးအခြား attribute များကဲ့သို့သောအခြား attribute များပြောင်းလဲခြင်း,
ဤကိစ္စတွင်အလုပ်အကိုင်ကိုပြည်တွင်းပြည်နယ်တစ်ခုအဖြစ်မျှဝေနိုင်သည်။
class Character {
private $job;
private $position;
private $hp;
public function __construct($job) {
$this->job = $job;
}
public function setPosition($x, $y) {
$this->position = "($x, $y)";
}
public function setHP($hp) {
$this->hp = $hp;
}
public function display() {
echo "အလုပ်အကိုင်:{$this->job},တည်ရှိမှု:{$this->position},ကျန်းမာရေးတန်ဖိုး:{$this->hp}";
}
}
EncyClopedia mode မှတဆင့်ကျွန်ုပ်တို့သည်အခန်းကဏ် rote မှအရာဝတ်ထုအရေအတွက်ကိုထိထိရောက်ရောက်လျှော့ချနိုင်ပြီးမှတ်ဉာဏ်အသုံးချမှုနှင့်စနစ်စွမ်းဆောင်ရည်ကိုတိုးတက်စေသည်။
$factory = new FlyweightFactory();
$character1 = $factory->getFlyweight('စစ်သား');
$character1->setPosition(10, 20);
$character1->setHP(100);
$character1->display();
$character2 = $factory->getFlyweight('မာဗေသော်');
$character2->setPosition(30, 40);
$character2->setHP(80);
$character2->display();
ရလဒ်ရလဒ် -
အလုပ်အကိုင်:စစ်သား,တည်ရှိမှု:(10, 20),ကျန်းမာရေးတန်ဖိုး:100
အလုပ်အကိုင်:မာဗေသော်,တည်ရှိမှု:(30, 40),ကျန်းမာရေးတန်ဖိုး:80
အထက်ပါရလဒ်ရလဒ်များအနေဖြင့်မျှဝေထားသောအရာဝတ်ထုများ၏ (ထိုကဲ့သို့သောအလုပ်အကိုင်ကဲ့သို့သောအလုပ်အကိုင်) သည်အတူတူပင်ဖြစ်သည်။