Problem
သို့ရာတွင် generate လုပ်ပေးနေသော Class ၏ Sub Class အမျိုးအစားများတိုးပွားလာသည်နှင့် အမျှ Factory Method အား ပြုပြင်ပြောင်းလည်းရန် လိုအပ်လာမြဲ ဖြစ်ပြန်သည်။ Sub Class အမျိုးအစား များလေလေ Factory Method အတွင်းရှိ if else if နှင့် switch လော့ဂျစ်များ များလာလေလေ ဖြစ်ပါလိမ့်မည်။
ကျွန်တော်တို့ရေးသားသော အပလီကေးရှင်းတစ်ခုတွင် Theme အပေါ်မူတည်ပြီး UI Component များကို ထုတ်လုပ်ပေးရန်လိုအပ်လသည် ဟု ဆိုကြပါစို့။ Theme နည်းနေပါက ကိစ္စမရှိ၊ Theme အသစ်များ ထပ်မံဖြည့်စွက်လိုပါက UIFactory Class အား ပြုပြင်ရန်လိုအပ်ပြီး Factory Method များ အတွင်း Logic များ များပြားလာမည်ဖြစ်ပါသည်။
Solution
အဆိုပါပြဿနာအား ဖြေရှင်းရန် Abstract Factory Pattern ကို အသုံးပြုနိုင်ပါသည်။
အထက်ပါပုံအတိုင်း UIFactory နေရာတွင် AbstractUIFactory class နှင့် အစားထိုးပါမည်။ ပြီးမှ Theme အလိုက် AbstractUIFactory အား Extends လုပ်ထားသော Concrete Class Factory များအား တည် ဆောက်ပါမည်။ အဆိုပါ Concrete Factory များမှ တဆင့် သက်ဆိုင်ရာ Component များ အား Generate လုပ်ပေးပါမည်။ ထိုနည်းအားဖြင့် Theme အသစ်တိုးပွါးမည် ဆိုရင်လည်း Concrete Factory များနှင့် သက်ဆိုင်ရာ Theme အလိုက် Component များအား တည်ဆောက်သွားရုံသာ ဖြစ်သည်။ UIFactory တွင် ပြုပြင်စရာလိုအပ်တော့မည် မဟုတ်ပေ။
Conclusion
Abstract Factory Pattern ကိုအသုံးပြုခြင်းအားဖြင့် Object တည်ဆောက်မှု့ကို Concrete Class များအတွင်းတွင် Encapsulate လုပ်ပေးနိုင်ပါသည်။ ထိုနည်းအားဖြင့် Client အား Object တည်ဆောက်မှု့ မှ ကင်းဝေးစေပါသည်။
တဖန် Client မှလဲ Product Family တစ်ခုဆီမှ အခြားတစ်ခုဆီသို့ လွယ်ကူစွာ ပြောင်းလဲ အသုံးပြုနိုင်ပါမည်။ အသုံးပြုလိုသည့် လိုအပ်ချက် အလိုက် သက်ဆိုင်ရာ ConcreteFactory များကို ပြောင်းလဲ အသုံးပြူရုံသာဖြစ်ပါမည်။
ဆက်ပါဦးမည်။ လေးစားစွာဖြင့်
မင်းလွင်
ပံုေတြမၿမင္ရေတာ့ လိုက္စမ္းရတာ သိပ္အဆင္မေၿပဘူး ၿဖစ္ေနတယ္ခင္ဗ် ပံုေလးေတြ ၿပန္တင္ေပးပါအံုး အစ္ကို
ReplyDelete