آموزش الگوی طراحی(Design Pattern)پترن میانجی (Mediator Pattern)

گروه نرم افزاری هیلتن
گروه نرم افزاری هیلتن
159 بار بازدید - 15 ساعت پیش - پترن میانجی(Mediator Pattern) - الگوی
پترن میانجی(Mediator Pattern) - الگوی طراحی آموزش الگوی طراحی(Design Pattern)پترن میانجی (Mediator Pattern) الگوهای طراحی(Design patterns) دیزاین پترن . تعریف الگوی میانجی(Mediator Pattern): مجموعه‌ای از اشیا را داریم که با یکدیگر رفتار متقابل دارند و به صورت مستقیم با هم در ارتباط هستند. حال اگر تعداد اشیا زیاد شوند این ارتباط‌های مستقیم پیچیده می‌شوند و این پیچیدگی متقابلا موجب پیچیدگی نگهداری و توسعه برنامه می‌شود و همچنین این ارتباط‌ها باعث وابستگی اشیا به یکدیگر می‌شود، به همین دلیل نمی‌توان از اشیا فوق در جاهای مختلف استفاده کرد. در این حالت از الگوی Mediator استفاده می‌کنیم که به صورت یک کنترل مرکزی ارتباط‌های اشیا را در دست می‌گیرد و دیگر نیازی نیست که هریک از اشیا به صورت مستقیم با هم در ارتباط باشند و برای ارتباط با یکدیگر، شی Mediator را می‌شناسند و پیغام‌های خود را به آن ارسال می‌کنند و Mediator هم اشیا را می‌شناسد و پیغام را به شی مناسب ارسال می‌کند. در نتیجه منطق ارتباط بین اشیا به شی دیگر به نام Mediator منتقل می‌شود و این عمل باعث می‌شود که به راحتی بتوان تغییرات را در ارتباط‌های بین اشیا ایجاد کرد و یا ارتباط جدیدی تعریف کنیم، به علت اینکه وابستگی بین اشیا کم شده‌است و تغییرات تاثیری در اشیا دیگر ندارد [7]. برای این که اهمیت این الگو مشخص شود، یک شبکه کامپیوتری را در نظر بگیرید که در آن کامپیوترها با یکدیگر ارتباط دارند و هرکدام از کامپیوترها به‌راحتی می توانند با دیگری ارتباط داشته باشند. اگر پیاده‌سازی ما به این‌گونه باشد که این کامپیوتر ها را دو به دو به یکدیگر متصل کنیم، یک پیاده‌سازی فاجعه انجام داده‌ایم. زیرا این روش هم هزینه پیاده‌سازی زیادی دارد و هم پیچیده است و هم خطایابی آن سخت است. به جای این کار در شبکه‌های امروزی از یک سوییچ استفاده می‌شود که همه کامپیوترها به آن متصل شده و از طریق آن با یکدیگر تعامل دارند. در برنامه‌های چت نیز چنین مکانیزمی پیاده‌سازی شده است [12]. اگر بخواهیم الگوی Mediator را با این مکانیزم مقایسه کنیم این الگو همان سوییچ را پیاده‌سازی می‌نماید. حال یک مثال نرم افزاری شرح می دهم. یک لیست ایمیل را در نظر بگیرید که در آن ایمیل‌های اعضای یک سایت ثبت شده است. وقتی که مطلب جدیدی در سایت گذاشته می‌شود به همه ی اعضای این لیست، برای آگاهی یک ایمیل ارسال خواهد شد. در این صورت سرویسی که این لیست ایمیل را در اختیار دارد و ایمیل‌ها را ارسال می‌کند از الگوی Mediator استفاده می‌کند. حال اگر کاربری این قصد را داشته باشد که فقط مطالب قسمت خاصی از سایت را دنبال کند و با بقیه مطالب کاری نداشته باشد به این سرویس می‌گوید که این کار را برای آن انجام دهد. حالت دیگر این است که یک کاربر نمی‌خواهد هیچ ایمیلی درباره ی مطالب سایت به او ارسال شود و این کار را با همان سرویس میانجی انجام می دهد [14]. بنابر گفته GoF هدف از الگوي Mediator عبارت است از : " شي‌اي که نحوه تبادلات مجموعه‌اي از اشيا را کپسوله مي‌کند را تعريف مي‌نمايد. اين الگو با پرهيز از ارجاعات مستقيم بين مجموعه‌هایي از اشياء، اتصال حداقلي بين آنها را ترغيب نموده و اجازه مي‌دهد تا تبادلات را به‌صورت مستقل تغيير دهيد." نقش کلاس‌ها : • Mediator : ارائه واسط برای ارتباط با شی .Colleague • ConcreteMediator : پیاده‌سازی ارتباط شی‌های Colleague. • Colleague classes : هر Colleague شی Mediator را می‌شناسد در نتیجه هرکدام با Mediator ارتباط دارند. از کاربردهای این الگو : • براي تبادل پيغام بين اشیا مشابه براساس گروه‌بندي و غيره. مانند شبکه‌هاي اجتماعي که کاربران بر اساس گروه‌بندي‌هاي موجود به کاربران گروه دلخواه پيام مي‌فرستند يا چيزي را به اشتراک می‌گذارند. • براي ايجاد هماهنگي بين اشیا در وضعيت‌هاي مختلف. • این الگو در بسیاری از سیستم‌های مدرن که از پروتکل Send/receive استفاده می‌کنند مانند list serverها و چت روم‌ها استفاده شده است. از مزایای این الگو : • سادگي تغيير در برنامه • اشیا می‌توانند به راحتی وظایف خود را انجام دهند و بدون داشتن اطلاعات دقیق از اشیا دیگر با آن‌ها ارتباط داشته باشند. • کنترل ارتباطات با استفاده از این الگو متمرکز می‌شود. • ارتباطات اشیا با یکدیگر به آسانی قابل فهم و استفاده مجدد خواهد بود. از معایب این الگو : • پیچیدگی کلاس Mediator ممکن است بالا باشد. • در صورت پیاده‌سازی نادرست ممکن است که فهم کلاس Mediator سخت باشد. چگونه برنامه نویسی را شروع کنیم ؟ -هیلتن دانلود کامل این پکیچ از وبسایت. www.heilton.com/ لطفا در کانال یوتیوب ماهم عضو شوید : 👇👇👇👇👇👇👇👇    / @گروهنرمافزاریهیلتن   اگه خواستید به کانال تلگرامی ما هم یه سری بزنید : t.me/HeiltonProgramming و هم چنین گروه تلگرامی ما :t.me/joinchat/VnroNrh2Qglqse8h
15 ساعت پیش در تاریخ 1403/07/08 منتشر شده است.
159 بـار بازدید شده
... بیشتر