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