برنامه نویسی

الگوی میانجی – انجمن DEV

الگوی میانجی در سی شارپ: راهنمای جامع

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

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

نحوه استفاده از الگوی واسطه

  1. یک رابط میانجی را تعریف کنید
    یک رابط ایجاد کنید که روش های ارتباط بین همکاران را اعلام کند.

  2. میانجی را اجرا کنید
    یک کلاس مشخص ایجاد کنید که رابط میانجی را برای مدیریت تعاملات پیاده سازی می کند.

  3. کلاس های همکار را تعریف کنید
    این کلاس ها به طور غیر مستقیم از طریق واسطه تعامل دارند.

  4. ادغام با واسطه
    همکاران از میانجی آگاه هستند، اما از یکدیگر آگاه نیستند، و از اتصال آزاد اطمینان حاصل می کنند.

مثال در سی شارپ
رابط میانجی:

public interface IMediator
{
    void Notify(object sender, string eventType);
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

واسطه بتن:

public class ConcreteMediator : IMediator
{
    private ComponentA _componentA;
    private ComponentB _componentB;

    public ConcreteMediator(ComponentA componentA, ComponentB componentB)
    {
        _componentA = componentA;
        _componentA.SetMediator(this);
        _componentB = componentB;
        _componentB.SetMediator(this);
    }

    public void Notify(object sender, string eventType)
    {
        if (eventType == "EventA")
        {
            Console.WriteLine("Mediator reacts to EventA and triggers B.");
            _componentB.DoSomething();
        }
        else if (eventType == "EventB")
        {
            Console.WriteLine("Mediator reacts to EventB and triggers A.");
            _componentA.DoSomething();
        }
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کلاس های همکار:

public abstract class BaseComponent
{
    protected IMediator _mediator;

    public void SetMediator(IMediator mediator)
    {
        _mediator = mediator;
    }
}

public class ComponentA : BaseComponent
{
    public void TriggerEventA()
    {
        Console.WriteLine("ComponentA triggers EventA.");
        _mediator.Notify(this, "EventA");
    }

    public void DoSomething()
    {
        Console.WriteLine("ComponentA is doing something.");
    }
}

public class ComponentB : BaseComponent
{
    public void TriggerEventB()
    {
        Console.WriteLine("ComponentB triggers EventB.");
        _mediator.Notify(this, "EventB");
    }

    public void DoSomething()
    {
        Console.WriteLine("ComponentB is doing something.");
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کد مشتری:

var componentA = new ComponentA();
var componentB = new ComponentB();
var mediator = new ConcreteMediator(componentA, componentB);

componentA.TriggerEventA();
componentB.TriggerEventB();

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مزایای الگوی واسطه

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

معایب الگوی واسطه

  • پیچیدگی: خود واسطه می‌تواند به یک کلاس پیچیده و متورم تبدیل شود اگر تعاملات زیادی را مدیریت کند.
  • Single Point of Failure: اگر میانجی شکست بخورد، کل شبکه ارتباطی را تحت تأثیر قرار می دهد.
  • سربار: برای تعاملات ساده، استفاده از یک واسطه می تواند پیچیدگی غیر ضروری را اضافه کند.

فهرست مطالب

مراجع

نتیجه گیری

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا