نمای ساختمان mahdi.sg مرداد ۲۶, ۱۴۰۳

نـــمــای ساخــتـــمـــان (ّّFacade)


هـــدف

فاساد (Facade) یک الگوی طراحی ساختاری است که یک رابط ساده‌ شده برای یک کتابخانه، یک چارچوب یا هر مجموعه پیچیده دیگری از کلاس‌ها فراهم می‌کند.

Facade design pattern

مـسئـــلـه

تصور کنید که باید کد خود را با مجموعه‌ای گسترده از اشیاء متعلق به یک کتابخانه یا چارچوب پیچیده هماهنگ کنید. به طور معمول، باید همه آن اشیاء را مقداردهی اولیه کنید، وابستگی‌ها را پیگیری کنید، متدها را به ترتیب صحیح اجرا کنید و غیره.

در نتیجه، منطق تجاری کلاس‌های شما به شدت با جزئیات پیاده‌سازی کلاس‌های شخص ثالث مرتبط می‌شود و درک و نگهداری آن را دشوار می‌کند.

فاساد کلاسی است که یک رابط ساده برای یک زیرسیستم پیچیده که شامل قطعات متحرک زیادی است، فراهم می‌کند. یک فاساد ممکن است در مقایسه با کار مستقیم با زیر سیستم، عملکرد محدودی داشته باشد. با این حال، فقط شامل ویژگی‌هایی می‌شود که مشتریان واقعاً به آن‌ها اهمیت می‌دهند.

داشتن یک فاساد زمانی مفید است که نیاز دارید برنامه خود را با یک کتابخانه پیچیده که دارای ده‌ها ویژگی است ادغام کنید، اما فقط به کمی از عملکرد آن نیاز دارید.

برای مثال، یک برنامه‌ای که ویدیوهای کوتاه خنده‌دار با گربه‌ها را در رسانه‌های اجتماعی آپلود می‌کند، می‌تواند از یک کتابخانه حرفه‌ای تبدیل ویدیو استفاده کند. با این حال، تنها چیزی که واقعاً به آن نیاز دارد کلاسی با یک متد واحد encode(filename, format) است. پس از ایجاد چنین کلاسی و اتصال آن به کتابخانه تبدیل ویدیو، اولین فاساد خود را خواهید داشت.

An example of taking a phone order

وقتی با یک مغازه تماس می‌گیرید تا سفارش تلفنی بدهید، یک اپراتور فاساد شما به تمام خدمات و بخش‌های فروشگاه است. اپراتور یک رابط صوتی ساده برای شما با سیستم سفارش‌دهی، دروازه‌های پرداخت و خدمات تحویل مختلف فراهم می‌کند.

برای مطـالعـه متن کامل مقالــه، مجموعه کــــدها، نحوه پیاده سازی، مزایا و معایب و روابط با الگوهای دیگر، ایــنــجـــا کلیک کنید.