نقش Mediator در طراحی صحیح یک معماری پروژه برنامه نویسی
Mediator (میانجی) یک الگوی طراحی نرمافزاری است که نقش آن مدیریت ارتباط بین اجزای مختلف سیستم است. به جای اینکه کلاسها یا ماژولها مستقیماً با هم صحبت کنند و وابستگیهای زیادی ایجاد شود، همه پیامها و درخواستها از طریق یک "میانجی" رد و بدل میشوند.
نقش اصلی Mediator
-
کاهش وابستگیها: کلاسها دیگر به همدیگر وابسته نیستند، بلکه فقط با میانجی ارتباط دارند.
-
سادهسازی ارتباطات: به جای اینکه هر جزء دهها ارتباط مستقیم با دیگر اجزا داشته باشد، فقط یک مسیر ارتباطی با میانجی دارد.
-
تمرکز منطق هماهنگی: تصمیمگیری درباره اینکه چه کسی باید چه کاری انجام دهد، در میانجی قرار میگیرد.
-
قابلیت تست و نگهداری بهتر: چون هر جزء مستقلتر است، تست کردن و تغییر دادن سیستم راحتتر میشود.
مثال ساده
فرض کنید در یک سیستم چند دکمه و چند فیلد متنی داریم. اگر هر دکمه مستقیماً فیلدها را تغییر دهد، وابستگیها زیاد میشود. با Mediator، هر دکمه فقط به میانجی خبر میدهد: "من کلیک شدم". میانجی تصمیم میگیرد کدام فیلد باید تغییر کند.
در دنیای .NET و MediatR
در ASP.NET Core وقتی از MediatR استفاده میکنیم:
-
کنترلر فقط یک درخواست (Request) به Mediator میفرستد.
-
Mediator آن را به Handler مناسب میفرستد.
-
Handler منطق اصلی را اجرا میکند.
به این ترتیب کنترلر دیگر مستقیم به سرویسها یا دیتابیس وصل نیست، بلکه همه چیز از طریق Mediator هماهنگ میشود.
خلاصه کلام: Mediator نقش یک هماهنگکننده مرکزی را دارد که ارتباط بین اجزای سیستم را مدیریت میکند و باعث کاهش پیچیدگی و وابستگی میشود.
میخواهی برایت یک نمودار ساده بکشم که نشان دهد کنترلر، Mediator و Handler چطور با هم ارتباط میگیرند؟
پروژه ویدیو در github: