بعدی

الگوی مدیاتور - قسمت دوم
/8/18/2022 3:40:33 AM
news-43c0928bc011.jpg
معماری نرم افزار - الگو های نرم افزار الگوی مدیاتور - قسمت اول

Mediator Pattern

الگوی مدیاتور : نحوه تعامل مجموعه ای از اشیاء , جلوگیری از ارجاع واضح اشیاء به یکدیگر.

 

این تعریف در واقع به این معنی است که یک کلاس متمرکز قرار است برای تعامل بین دو کلاس مختلف استفاده شود. این ورودی را از یک کلاس دریافت می کند و آن را به کلاس دیگری که برای آن کلاس در نظر گرفته شده ارسال می کند. و پاسخ کلاس دیگر به کلاس اول بازگردانده می شود، جایی که فرآیند از آنجا شروع شده است. بنابراین منجر به یک سیستم درخواست پاسخ بین کلاس ها می شود. این همچنین منجر به سیستمی می شود که در آن چندین کلاس از منابع می توانند با چندین کلاس در انتهای مقصد تعامل داشته باشند و در نتیجه منجر به یک سیستم جفت شده آزاد شود.

 

مثال :

یک شرکت توسعه دارای بخش توسعه دات نت است. این شرکت پروژه‌هایی را از مشتریان مختلفی دریافت می‌کند، مثلاً ClientA و ClientB. اما به دلیل محدودیت های زمانی، تیم توسعه نمی تواند به طور مستقیم با مشتریان تعامل داشته باشد و بالعکس. بنابراین، آنها تصمیم می گیرند از یک واسطه، مثلاً تیم توسعه کسب و کار یا BD، برای تعامل با مشتری استفاده کنند. از سوی دیگر، تیم BD مشتری را به تیم توسعه نمایندگی خواهد کرد. بنابراین اساساً تیم BD در اینجا به یک واسطه یا میانجی بین تیم توسعه و مشتری تبدیل می شود.

با استفاده از مثال بالا سعی می کنیم پیاده سازی را در کد بنویسیم. در اینجا، واسطه عملکردی را برای دریافت الزامات از یک مشتری، ارسال آنها به تیم توسعه، دریافت پرس و جو از تیم توسعه و ارسال آنها برای مشتری انجام می دهد.

 

برای شروع، ما اجزای زیر را در سیستم خواهیم داشت:

ClientAbstract و DevTeam Abstract

ConcreteClients و ConcreteDevTeams

اینها مشتری و تیم های توسعه دهنده مشخص هستند که از کلاس های انتزاعی مربوطه خود به ارث می برند.

 

در مورد ما، این کلاس‌های مشخص ClientA و ClientB از کلاس abstract مشتری و DevTeamA و DevTeamB هستند که از کلاس‌های abstract dev-team به ارث بری میکنند .

 

Mediator

Mediator جزء اصلی سیستم است که درخواست های فرستنده را دریافت کرده و به گیرنده مربوطه ارسال می کند و بالعکس.

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

 

برای این فرآیند، کدها را در مراحل مختلف می نویسیم و به آنها به عنوان فرآیندهای مختلف اشاره می کنیم. اما در طول این مدت، باید در نظر داشته باشیم که تمام ارتباطات باید از طریق واسطه(Mediator) انجام شود که یا برای ارسال یا دریافت پاسخ از دو مؤلفه، به عبارت دیگر مشتریان و تیم های توسعه دهنده است.

 

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

آموزش های مرتبط

نظر ها

---

ثبت نظر