گروه نرم افزاری هیلتن

مهندسی نرم افزار: الگو های طراحی

الگوی طراحی Mediator



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

هدف

تعریف شی میانجی برای جلوگیری از ارتباط مستقیم اشیا مختلف به یکدیگر و مدیریت روابط آن ها.

انگیزه

گاهی با مجموعه ای از اشیا سروکار داریم که با هم کار می کنند و یک هدف را دنبال می کنند.

کاربرد

• مجموعه ای از اشیا داریم که با هم به صورت غیر مستقیم در ارتباط هستند.

• مدیریت ارتباط بین کلاس ها

ساختار:

در شکل زیر نمودار کلاس دیاگرام این الگو نشان داده شده است.

نمودار کلاس دیاگرام الگوی mediator
اجزا:

Mediator: یک واسط که ساختار کلی شی میانجی را نشان می دهد.

Concrete Mediator: یک میانجی که اینترفیس Mediator را پیاده سازی نموده است.

Colleague: یک واسط که ساختار اشیایی که می خواهند با هم در ارتباط باشند را تعریف می کنند.

Concrete Colleague: کلاس های هستند که می خواهند با هم در ارتباط باشند. این کلاس ها واسط Colleague را پیاده سازی نموده اند و از وجود میانجی با خبر هستند.

پیامد

• اگر Colleague ی خودش را تغییر دهد باید شی میانجی را با خبر سازد.

• برای بهبود کارایی می توان متد های Mediator را به صورت غیر همزمان بنوسیم. اما در کل باید مراقب هماهنگ بودن وضعیت سیستم باشیم.

پیاده سازی:

برای یک محیط شبکه ای یک چترم را با الگوی میانجی پیاده سازی کنید.

نقاط قوت:

• اگر در رفتار یک کلاس تغییر ایجاد شود نیازی به تغییر دیگر کلاس ها نیست.

• تعریف و تغییر در پروتکل ارتباطی بین اشیا ساده است.

نقاط ضعف:

• پیاده سازی رفتار تمام اشیا درون شی میانجی بسیار پیچیده باشد.

• وجودیک شی میانجی برای تبادل اطلاعات بین اشیا می توانذ بر روی کارایی تاثیر بگذارد.







گروه برنامه نویسی هیلتن

گروه برنامه نویسی هیلتن