الگوی طراحی Facade در سوئیفت

آفلاین
user-avatar
آرمان آبکار
16 مرداد 1400, خواندن در 2 دقیقه

الگوی طراحی نما (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 بسیار آسان است و گاهی اوقات نیز اصلا متوجه استفاده از آنها نمی شوید. این الگو میتواند برای پنهان کردن پیچیدگی ها، کاهش وابستگی یا ساده تر کردن طراحی بسیار مفید باشد. اگر میخواهید بیشتر درمورد این الگو بخوانید، این مقاله را نیز برسی کنید.

منبع

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید