Behavioral DESIGN PATTERNS
یکی از زیرشاخه های الگوهای طراحی، Behavioral Design Patterns است. تمرکز و وظیفه اصلی این دیزاین پترن ها تعامل اشیاء و جداسازی وظایف آن ها از یکدیگر است.
Mediator Design Pattern
دیزاین پترن Mediator یکی از زیرشاخه های الگوهای طراحی از نوع Behavioral است.
الگوی طراحی میانجی (Mediator) یک شی را تعریف می کند که نحوه تعامل مجموعه ای از اشیاء را در بر می گیرد و کپسوله سازی میکند. loose coupling را با جداسازی اتصال بین اشیا ترویج میدهد.
سختش نکنیم! وقتی بخواهیم به در بگیم تا دیوار بشنوه از این روش استفاده میکنیم. از طریق یک میانجی یا واسط کارمون رو در اصل انجام میدیم.
میزان استفاده : متوسط رو به پایین
پیاده سازی دیزاین پترن Mediator
فرض کنید کلاس چت روم (ChatRoom) را به شکل زیر پیاده سازی کرده ایم.
public static void ShowMessage(User user, string message) { if (user == null) return; if (string.IsNullOrEmpty(message) || string.IsNullOrWhiteSpace(message)) return; Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] {user.Name} : {message}"); }
در این کلاس یک متد جهت نمایش یک پیام در صفحه چت داریم. تاریخ را به همراه نام کاربر و پیامش در کنسول چاپ میکند.
فرض کنید کلاس User را به این شکل پیاده سازی میکنیم.
class User { public string Name { get; set; } public User(string name) { Name = name; } public void SendMessage(string message) { ChatRoom.ShowMessage(this, message); } }
در کد بالا کاربر یک نام میتواند داشته باشد. علاوه بر این یک متد داریم جهت ارسال پیام که از طریق همان ChatRoom اقدام به ارسال پیام میکند.
حال به سراغ متد main میرویم.
static void Main(string[] args) { try { User hossein = new User("Hossein"); User abbas = new User("Abbas"); hossein.SendMessage("Hi Abbas"); abbas.SendMessage("Hello Hossein"); } catch (Exception ex) { ShowError(ex.Message); } Console.ReadLine(); }
ما در اینجا قصدمان چت کردن بین دو کاربر است. اما به جای اینکه از کلاس ChatRoom به طور مستقیم استفاده کنیم از کلاس User برای این منظور استفاده کردیم.
یکی از پرکاربردترین کتابخانه های دات نتی در معماری Clean یا Onion به نام MediatR از همین دیزاین پترن استفاده میکند.
این Nuget را میتوانید از این لینک دریافت کنید.
برای آموزش رایگان در مورد انواع دیزاین پترن ها و معماری های نرم افزار می توانید به این آموزش مراجعه نمایید:
معماری نرم افزار مهم ترین پترن های معماری نرم افزار
دیزاین پترن یا الگوی طراحی چیست؟
دیزاین پترن در حقیقت راه حل مسائل طراحی نرم افزار هستند که بارها و بارها در دنیای توسعه نرم افزار تکرار میشوند. الگوهایی از طراحی قابل استفاده مجدد (reusable) و تعامل اشیاء.
نظرات