الگوی طراحی نما (facade) یک رابط ساده برای یک سیستم پیچیده در زیر است. در این مقاله با مثالی در زبان سوئیفت درباره ی این الگوی طراحی توضیح خواهیم داد.
Facade چیست؟
نام facade برگرفته از معماری ساختمان در دنیای واقعی است.
نما (facade) طرفی از قسمت بیرونی ساختمان، معمولا رو به روی آن است.
به عبارتی می توان گفت facade در توسعه نرم افزار چیزی است در بیرون که اعضای درونی را پنهان میکند. پس هدف اصلی الگوی طراحی facade فراهم کردن یک API یا رابط ساده برای هر چیز پیچیده در داخل سیستم است.
اگر دو یا چند زیرسیستم جدا از هم نیاز بودند تا با یکدیگر کارکنند تا وظایفی را انجام دهند، الگوی طراحی facade برای این حالت بسیار مناسب خواهد بود. الگوی طراحی facade میتواند تمام پیچیدگی های زیرین را پنهان کند و اگر هم چیزی در متد های پنهان سیستم تغییر کند، رابط facade ما بدون تغییر خواهد ماند.
یک نمونه واقعی از الگوی طراحی facade
برنامه ای را تصور کنید که با یک دکمه، تنظیمات مشخصی را خاموش و روشن میکند. اگر کاربر آن را فشار دهد، تنظیمات اصلی در حافظه پیش فرض تغییر میکند و همچنین صدایی جهت بازخورد (feedback) ورودی داده شده، پخش میشود. این سه عمل متفاوتی است که با هم برای اجرا شدن گروه بندی میشوند:
تغییر دادن تنظیمات:
let settingsKey = "my-settings"
let originalValue = UserDefaults.standard.bool(forKey: settingsKey)
let newValue = !originalValue
UserDefaults.standard.set(newValue, forKey: settingsKey)
UserDefaults.standard.synchronize()
صدای بازخورد (feedback):
AudioServicesPlaySystemSound(1054);
بروزرسانی رابط کاربری UI:
self.switchButton.setOn(newValue, animated: true)
و در نهایت ایجاد Facade:
func toggleSettings() {
let settingsKey = "my-settings"
let originalValue = UserDefaults.standard.bool(forKey: settingsKey)
let newValue = !originalValue
UserDefaults.standard.set(newValue, forKey: settingsKey)
UserDefaults.standard.synchronize()
AudioServicesPlaySystemSound(1054);
self.switchButton.setOn(newValue, animated: true)
}
toggleSettings()
تبریک شما اولین facade بسیار ساده خود را ایجاد کردید. اگر این کد برای شما آشنا به نظر میرسد، به این معنا است که قبلا نیز از الگوی طراحی facade در کد خود استفاده کرده اید.
البته این سیستم میتواند پیچیده تر نیز باشد، به عنوان مثال اگر وب سرویسی داشتید که نیاز به بارگذاری داده ها و پیوست فایل داشت، میتوانید از الگوی طراحی facade برای پنهان کردن پیچیدگی های داخل سیستم استفاده کنید.
ایجاد الگوی طراحی facade بسیار آسان است و گاهی اوقات نیز اصلا متوجه استفاده از آنها نمی شوید. این الگو میتواند برای پنهان کردن پیچیدگی ها، کاهش وابستگی یا ساده تر کردن طراحی بسیار مفید باشد. اگر میخواهید بیشتر درمورد این الگو بخوانید، این مقاله را نیز برسی کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید