Cara menggunakan pola desain mediator di C #

Pola desain digunakan untuk memecahkan masalah desain umum dan mengurangi kerumitan dalam kode kami. Pola mediator adalah pola desain perilaku yang mempromosikan kopling longgar antar objek dan membantu mengatur kode untuk komunikasi antar objek.

Artikel ini menyajikan diskusi tentang pola desain mediator dan bagaimana hal itu dapat diterapkan menggunakan C #.

Apa pola desain mediator? 

Bayangkan sebuah aplikasi di mana terdapat banyak objek yang saling berkomunikasi. Pola desain mediator berguna ketika jumlah objek bertambah begitu banyak sehingga menjadi sulit untuk mempertahankan referensi ke objek. Mediator pada dasarnya adalah sebuah objek yang merangkum bagaimana satu atau lebih objek berinteraksi satu sama lain. Pola desain mediator mengontrol bagaimana objek ini berkomunikasi, dan membantu mengurangi jumlah ketergantungan di antara mereka yang harus Anda kelola.

Dalam pola desain mediator, objek tidak berkomunikasi satu sama lain secara langsung tetapi melalui mediator. Ketika sebuah objek perlu berkomunikasi dengan objek lain atau sekumpulan objek, itu mengirimkan pesan ke mediator. Mediator kemudian mengirimkan pesan ke setiap objek penerima dalam bentuk yang dapat dimengerti olehnya.

Dengan menghilangkan komunikasi langsung antar objek, pola desain mediator mempromosikan kopling yang longgar. Manfaat lain dari penggunaan pola desain mediator adalah meningkatkan keterbacaan kode dan pemeliharaan. Untuk ukuran yang baik, berikut adalah definisi resmi Gang of Four dari pola mediator:

Tentukan objek yang merangkum cara sekumpulan objek berinteraksi. Mediator mempromosikan kopling longgar dengan menjaga objek agar tidak merujuk satu sama lain secara eksplisit, dan ini memungkinkan Anda memvariasikan interaksinya secara independen.

Perhatikan bahwa pola desain mediator berbeda dari pola desain fasad. Pola mediator memfasilitasi bagaimana satu set objek berinteraksi, sedangkan pola fasad hanya menyediakan antarmuka terpadu ke satu set antarmuka dalam aplikasi. Dengan demikian pola mediator merupakan pola perilaku yang berhubungan dengan perilaku objek, sedangkan pola fasad merupakan pola struktur yang berhubungan dengan komposisi objek.

Menerapkan pola desain mediator di C #

Tapi cukup banyak konsepnya — mari kita bahas beberapa kode. Peserta dalam desain ini adalah mediator, mediator konkrit, dan satu atau lebih tipe peserta. Sementara mediator bertanggung jawab untuk menentukan antarmuka untuk berkomunikasi dengan peserta, mediator konkret, seperti namanya, mengimplementasikan antarmuka mediator dan memiliki pengetahuan tentang peserta. Perhatikan bahwa tipe peserta terkadang disebut kolega. Jadi dalam beberapa implementasi, Anda memiliki tipe kolega dan kolega konkret.

Sekarang, lihat antarmuka berikut. Ini adalah antarmuka untuk mediator yang akan kita gunakan dalam contoh ini.

antarmuka publik Imediator

    {

        batal AddParticipant (IParticipant participant);

        void BroadcastMessage (pesan string, pengirim peserta IP);

    }

Perhatikan bahwa antarmuka ini berisi deklarasi dua metode, AddParticipant dan  BroadcastMessage. Sementara yang pertama digunakan untuk menambahkan peserta ke daftar peserta yang dikelola oleh  ConcreteMediator kelas (diberikan di bawah), yang terakhir digunakan untuk menyiarkan pesan ke daftar peserta.

Ini  ConcreteMediator kelasnya. Ini mengimplementasikan  IMediator antarmuka. Saya meninggalkan penerapan  BroadcastMessage metode untuk Anda isi.

kelas publik ConcreteMediator: Imediator

    {

        Daftar peserta = Daftar baru ();

        public void AddParticipant (IParticipant participant)

        {

            peserta.Add (peserta);

        }

        public void BroadcastMessage (pesan string, pengirim peserta IP)

        {

            // Tulis kode di sini untuk menyiarkan pesan kepada peserta

        }

    }

The IParticipantantarmuka berisi deklarasi  SendMessage metode.

Antarmuka publik Peserta Ip

    {

        void SendMessage (pesan string);

    }

Berikut adalah contoh kelas peserta konkret. Perhatikan bahwa kelas-kelas ini mengimplementasikan  IParticipant antarmuka.

public class ConcretePartisipan 1: Iparticipant

    {

        mediator IMediator yang dilindungi;

        public ConcreteParticipant1 (Mediator mediator)

        {

            this.mediator = mediator;

        }

        public void SendMessage (pesan string)

        {

            mediator.SendMessage (pesan, ini);

        }

    }

    public class ConcretePartisipan2: Iparticipant

    {

        mediator IMediator yang dilindungi;

        public ConcreteParticipant2 (Mediator mediator)

        {

            this.mediator = mediator;

        }

        public void SendMessage (pesan string)

        {

            mediator.SendMessage (pesan, ini);

        }

    }

Dan itu dia! Potongan kode berikut menunjukkan bagaimana Anda dapat menggunakan semua jenis yang telah kami buat sejauh ini.

static void Main (string [] args)

    {

        IMediator mediator = new ConcreteMediator ();

        IParticipant participant1 = new ConcreteParticipant1 (mediator);

        IParticipant participant2 = new ConcreteParticipant2 (mediator);

        mediator.AddParticipant (participant1);

        mediator.AddParticipant (participant2);

        participant1.SendMessage ("Ini adalah peserta pertama");

        participant2.SendMessage ("Ini adalah peserta kedua");

        Console.ReadLine ();

    }

Pola desain mediator adalah pola perilaku yang mempromosikan kopling longgar dengan memediasi komunikasi antara objek yang berbeda. Karena mediator memfasilitasi semua interaksi antar objek, objek ini dapat diubah sesuka hati. Yang terpenting, mereka tidak perlu memiliki pengetahuan satu sama lain. Dengan demikian, pola mediator membantu Anda menulis kode yang terstruktur dengan baik, dapat dipelihara, dan mudah diuji.