خیلی وقتها شما شما یک سیستم پیچیده پیادهسازی کردید و نیاز دارید پیچیدگی اون سیستم رو از کد قسمت دیگهای مخفی کنید ، یکی از کاربردهای الگویِ Facade در این زمینه هست !
معنی لغوی Facade به معنی "نَما" هست ، پس شما کاری که میکنید اینه که یک نما از سیستم به کدتون میدید و این نما شامل توابع مورد نیازتون هست ، یکی از کتابخانههای مشهور اندروید که از این الگو استفاده میکنه Retrofit هست که شما دیگه کاری با پیچیدگی پیادهسازی توابع مربوطه ندارید و صرفا با گرفتن instance از Retrofit به توابع مورد نظرتون دسترسی دارید ، ممکنه دقیق متوجه حرفهای من نشده باشید پس به این تصویر نگاه کنید :
این شکل یک شکلِ مینیمال از آنچه اتفاق میافتد است ، ماژولهای مختلف با هم تعامل دارند و یک سیستم رو تشکیل میدهند و اگر ما بخوایم ازشون تو کد استفاده کنیم کارمون خیلی سخت میشه پس نیاز داریم کلاسی به اسم Facade بسازیم تا نماینده و نَمای کل اون سیستم برای ما باشه ، این الگو جزوِ Structural ها حساب میشه .
سیستمِ پخشِ موسیقیای داریم که شامل یک موزیک پلیر ، یک نمایشگر و باند است ، سیستم به این شکل تعریف شده که زمانی که موسیقی در حال پخش بود اطلاعات درون نمایشگر نشان داده شود و از باند پخش شود ، از طریق نمایشگر میتوانیم موسیقی رو کنترل کنیم ، همین طور باید دقت کنیم که موزیک پلیر و اسپیکر فقط در حالتی کار میکنند که روشن باشند ، این روشن بودن را نیز مانیتور کنترل میکنید ، یک سیستم پیچیده ! کلاسی خواهیم ساخت که نماینده کلِ این سیستم برای ما باشد .
اول از همه سه کلاس MusicPlayer ، Screen و Speaker رو ایجاد میکنیم :
حالا نیاز به یک کلاس با الگویِ Facade داریم که خلاصه آنچه ما نیاز داریم را برای ما تهیه کنید ، ما در این کلاس فقط نیاز داریم : 1.آهنگ پخش کنیم 2.کلِ سیستم را خاموش کنیم :
و این طوری پیچیدگی کلِ سیستم از کدِ Client پنهان میمونه :
باقی مقالات در مورد الگویهای طراحی رو در این مقاله بخونید .
من رو در لینکدین و اینستاگرام دنبال کنید ???
اگه دوست داشتید میتونید به صفحه Spotify بنده هم برید و موسیقی های منو گوش بدید ???