الگوی میانجی

دانشنامه عمومی

در مهندسی نرم افزار الگوی میانجی تعریف یک شی است که روابط مجموعه ای از اشیاء را تهیه و تعیین می کند. این الگو به خاطر آن که می تواند رفتار برنامه را در حین اجرا تغییر دهد، به عنوان یک الگوی رفتاری شناخته می شود.
برنامه ها معمولاً از تعداد زیادی کلاس تشکیل می شوند. در نتیجه منطق برنامه و محاسبات آن بین این کلاس ها توزیع می شوند. اما، در حالی که در مرحله نگهداری یا بازسازی کد تعداد کلاس ها بیشتر می شوند، مشکل ارتباط بین این کلاس ها ممکن است پیپیده تر شود. این باعث دشواری بیشتر در خواندن و حفظ کد می شود. همچنین تغییر برنامه، به خاطر آن که هر تغییر باعث تغییر تعداد زیادی از کلاس های دیگر می شود، سخت تر خواهد شد.
با کمک الگوی میانجی، ارتباط بین اشیاء در یک شیء میانجی گر محدود می شود. در نتیجه اشیاء بجای این که مستقیم با یکدیگر ارتباط برقرار کنند، ارتباطات خود را از طریق میانجی گر انجام می دهند. این باعث کاهش ارتباطات بین اشیاء شده و در نتیجه جفتگری ( coupling ) کاهش می یابد.
با استفاده از الگوی میانجی، تغییرات بر روی اشیاء داخل مجموعه دیگر منشتر شونده نخواهند بود و اصطلاحاً shotgun surgery از بین می رود. اما از طرف دیگر امکان تبدیل میانجی به کلاس خدا و ایجاد گلوگاه در سیستم وجود دارد.
تعریف الگوی میانجی: «یک شیء است که ارتباطات بین دسته ای از اشیاء را تهیه و تعیین می کند». باعث کاهش جفتگری ( coupling ) می شود چرا که جلوی اشیاء را برای ارتباط مستقیم با یکدیگر می گیرد. [ ۱] کلاس های مشتری می توانند از میانجی برای فرستادن پیغام به دیگر کلاس های مشتری استفاده کنند، و جواب خود را از طریق آن دریافت کنند.
Mediator - تعریف رابط برای ارتباط بین اشیاء مرتبط ( همکار )
ConcreteColleague - توسط میانجی با دیگر همکارانش ارتباط برقرار می کند.
الگوی میانجی مطمئن می شود که قسمت های مختلف ( components ) آزادانه ارتباط برقرار کنند، به طوری که مستقیم یکدیگر را صدا نکنند؛ و به جای آن همیشه از یک واسطه گر برای انجام این اهداف استفاده کنند. همان طور که می بینید، واسطه گر همه بخش ها را در خود ذخیره کرده است و در هنگام نیاز توابع آن ها را فراخوانی می کند.
public interface IComponent { void SetState ( object state ) ; } public class Component1 : IComponent { public void SetState ( object state ) { throw new NotImplementedException ( ) ; } } public class Component2 : IComponent { public void SetState ( object state ) { throw new NotImplementedException ( ) ; } } // Mediates the common tasks public class Mediator { public IComponent Component1 { get; set; } public IComponent Component2 { get; set; } public void ChangeState ( object state ) { this. Component1. SetState ( state ) ; this. Component2. SetState ( state ) ; } } یک اتاق گفتگو ( چت ) می تواند از یک الگوی میانجی استفاده کند، بدین صورت که هر کاربری ( مشتری ) وقتی که دیگر کاربران کاری ( در اتاق چت منظور فرستادن پیغام است ) انجام دهند مطلع می شود. در واقعیت استفاده از الگوی میانجی در اتاق گفتگو تنها در صورتی می تواند عملی باشد که توسط یک کنترل از راه دور استفاده شود. استفاده از سوکت های شبکه، امکان فراخوانی نمایندگان را نمی دهد. ( فراخوانی: عملیات دریافت پیغام توسط افراد عضو شده در یک کلاس میانجی ) جاوا در این مثال شیء میانجی، کنترل وضعیت سه دکمه همکار را بر عهده می گیرد، و برای آن سه تابع book و view و search را که وضعیت دکمه ها را تنظیم می کند دارد. این توابع توسط دکمه در هنگام فعال شد ( با دستور execute در هر کدام ) فراخوانی می شوند.
عکس الگوی میانجی
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلف

پیشنهاد کاربران

بپرس