C# ile Mediator Pattern Kullanımı: Etkili İletişim Yöntemi

C# ile Mediator Pattern Kullanımı: Etkili İletişim Yöntemi


Mediatör Deseni, yazılım geliştirme süreçlerinde nesnelerin birbirleriyle ilişkisini yönetmek amacıyla kullanılan bir tasarım kalıbıdır. C# gibi nesne yönelimli programlama dillerinde bu kalıbı kullanmak, kodunuzu daha düzenli ve sürdürülebilir hale getirir. Bu makalede, C# ile Mediator Pattern'in nasıl uygulandığını, avantajlarını ve örnek bir uygulama ile açıklayacağız.

Mediatör Deseninin Temel İlkeleri

Mediatör Deseni, nesneler arasında doğrudan bir iletişim olmaksızın, bir medyatör aracılığıyla iletişimi sağlar. Bu yaklaşım, nesnelerin birbirlerine bağımlılığını azaltır ve kodun daha modüler olmasına yardımcı olur. Temel olarak üç bileşenden oluşur: Medyatör, Konumlar (Kolaylaştırıcılar) ve İletişim Yöntemleri. Her bir konum, medyatör aracılığıyla mesaj gönderir ve alır.

1. Medyatör Arayüzü

public interface IMediator
{
    void Register(Colleague colleague);
    void Send(string message, Colleague colleague);
}

2. Kolaylaştırıcı Sınıflar

public abstract class Colleague
{
    protected IMediator mediator;

    public Colleague(IMediator mediator)
    {
        this.mediator = mediator;
    }
}

public class ConcreteColleague1 : Colleague
{
    public ConcreteColleague1(IMediator mediator) : base(mediator) {}

    public void Send(string message)
    {
        mediator.Send(message, this);
    }
}

public class ConcreteColleague2 : Colleague
{
    public ConcreteColleague2(IMediator mediator) : base(mediator) {}

    public void Send(string message)
    {
        mediator.Send(message, this);
    }
}

3. Medyatör Sınıfı

public class ConcreteMediator : IMediator
{
    private ConcreteColleague1 colleague1;
    private ConcreteColleague2 colleague2;

    public void Register(Colleague colleague)
    {
        if (colleague is ConcreteColleague1)
        {
            colleague1 = (ConcreteColleague1)colleague;
        }
        else if (colleague is ConcreteColleague2)
        {
            colleague2 = (ConcreteColleague2)colleague;
        }
    }

    public void Send(string message, Colleague colleague)
    {
        if (colleague == colleague1)
        {
            Console.WriteLine("Colleague1 sends: " + message);
            colleague2.Receive(message);
        }
        else
        {
            Console.WriteLine("Colleague2 sends: " + message);
            colleague1.Receive(message);
        }
    }
}

Sonuç

Mediatör Deseni, C# projelerinde Karmaşık iletişimleri yönetmek için etkili bir araçtır. Bu desen, nesnelerin bağımsız bir şekilde değişimini ve gelişimini desteklerken, sistemin genel esnekliğini artırır. Yukarıda paylaşılan örnek, bu tasarım kalıbının nasıl uygulanabileceğine dair temel bir bakış sunmaktadır. Projelerinizde Mediator Pattern kullanarak, kodunuzu daha düzenli ve sürdürülebilir hale getirebilirsiniz.