Design Pattern Mediator
omid sotooniالگو Mediator باعث می شود که وابستگی بین کلاس ها بسیار کم شود و نیازی نباشد که کلاس ها به صورت مستقیم با هم در ارتباط باشند. بجایی اینکه کلاس ها مستقیم با هم در ارتباط باشند از یک شی میانجی استفاده کنیم. کلاس های میانجی پیغام را دریافت کرده و آن را به کلاس مقصد می فرستد در نتیجه فرستنده نباید در مورد شی گیرنده هیچ اطلاعاتی داشته باشد به این خاطر وابستگی بین کلاس ها بسیار کم می شود. علاوه بر این کاهش وابستگی باعث بالا رفتن خوانای و راحت شدن نگهداری برنامه می شود و تغییر در یک شی نیازی به تغییر اشیایی دیگر نیست. این الگو برای محیط هایی مناسب می باشد که تعدادی زیادی اشیا داشته باشیم که تعامل زیادی داشته باشند.در واقعه وقتی یک کلاینت یک پیغام را می فرستد نام خود را هم همراه پیغام می فرستد و شی میانجی پیغام را به تمام کلاینت ها بجز شی فرستنده ارسال می کند.
هدف تعریف شی میانجی برای جلوگیری از ارتباط مستقیم اشیا مختلف به یکدیگر و مدیریت روابط آن ها.
انگیزهگاهی با مجموعه ای از اشیا سروکار داریم که با هم کار می کنند و یک هدف را دنبال می کنند.
کاربرد• مجموعه ای از اشیا داریم که با هم به صورت غیر مستقیم در ارتباط هستند.
• مدیریت ارتباط بین کلاس ها
ساختار:در شکل زیر نمودار کلاس دیاگرام این الگو نشان داده شده است.

اجزا:Mediator: یک واسط که ساختار کلی شی میانجی را نشان می دهد.
Concrete Mediator: یک میانجی که اینترفیس Mediator را پیاده سازی نموده است.
Colleague: یک واسط که ساختار اشیایی که می خواهند با هم در ارتباط باشند را تعریف می کنند.
Concrete Colleague: کلاس های هستند که می خواهند با هم در ارتباط باشند. این کلاس ها واسط Colleague را پیاده سازی نموده اند و از وجود میانجی با خبر هستند.
پیامد• اگر Colleague ی خودش را تغییر دهد باید شی میانجی را با خبر سازد.
• برای بهبود کارایی می توان متد های Mediator را به صورت غیر همزمان بنوسیم. اما در کل باید مراقب هماهنگ بودن وضعیت سیستم باشیم.
پیاده سازی:برای یک محیط شبکه ای یک چترم را با الگوی میانجی پیاده سازی کنید.
نقاط قوت:• اگر در رفتار یک کلاس تغییر ایجاد شود نیازی به تغییر دیگر کلاس ها نیست.
• تعریف و تغییر در پروتکل ارتباطی بین اشیا ساده است.
نقاط ضعف:• پیاده سازی رفتار تمام اشیا درون شی میانجی بسیار پیچیده باشد.
• وجودیک شی میانجی برای تبادل اطلاعات بین اشیا می توانذ بر روی کارایی تاثیر بگذارد.
آدرس این مقاله در وبسایت هیلتن:
🔗 http://heilton.com/Article/design-pattern/Mediator
کانال تلگرام گروه هیلتن😊👇
JOiN → @HeiltonProgramming