Cara menggunakan corak reka bentuk mediator di C #

Corak reka bentuk digunakan untuk menyelesaikan masalah reka bentuk biasa dan mengurangkan kerumitan dalam kod kami. Corak mediator adalah corak reka bentuk tingkah laku yang mendorong gandingan longgar antara objek dan membantu mengatur kod untuk komunikasi antara objek.

Artikel ini memaparkan perbincangan mengenai corak reka bentuk mediator dan bagaimana ia dapat dilaksanakan dengan menggunakan C #.

Apakah corak reka bentuk pengantara? 

Bayangkan sebuah aplikasi di mana terdapat banyak objek yang saling berkomunikasi. Corak reka bentuk mediator berguna apabila bilangan objek bertambah besar sehingga sukar untuk mengekalkan rujukan ke objek. Mediator pada dasarnya adalah objek yang merangkumi bagaimana satu atau lebih objek berinteraksi antara satu sama lain. Corak reka bentuk mediator mengawal bagaimana objek ini berkomunikasi, dan membantu mengurangkan bilangan kebergantungan di antara mereka yang harus anda atur.

Dalam corak reka bentuk mediator, objek tidak berkomunikasi antara satu sama lain secara langsung tetapi melalui orang tengah. Apabila suatu objek perlu berkomunikasi dengan objek lain atau sekumpulan objek, ia akan menghantar mesej itu kepada orang tengah. Mediator kemudian menghantar mesej ke setiap objek penerima dalam bentuk yang dapat difahami olehnya.

Dengan menghilangkan komunikasi langsung antara objek, corak reka bentuk pengantara mempromosikan gandingan longgar. Manfaat lain dari menggunakan corak reka bentuk mediator adalah bahawa ia meningkatkan kebolehbacaan kod dan kesenggaraan. Untuk ukuran yang baik, berikut adalah definisi Geng Empat rasmi mengenai pola pengantara:

Tentukan objek yang merangkumi bagaimana sekumpulan objek berinteraksi. Mediator mempromosikan gandingan longgar dengan menjauhkan objek daripada saling merujuk secara eksplisit, dan ini membolehkan anda mengubah interaksi mereka secara bebas.

Perhatikan bahawa corak reka bentuk pengantara berbeza dari corak reka bentuk fasad. Corak mediator memfasilitasi bagaimana sekumpulan objek berinteraksi, sementara corak fasad hanya menyediakan antara muka bersatu untuk sekumpulan antara muka dalam aplikasi. Oleh itu, pola mediator adalah pola tingkah laku yang berkaitan dengan tingkah laku objek, corak fasad adalah corak struktur yang berkaitan dengan komposisi objek.

Menerapkan corak reka bentuk mediator di C #

Tetapi cukup konsep - mari masuk ke dalam beberapa kod. Peserta dalam rancangan ini adalah orang tengah, pengantara konkrit, dan satu atau lebih jenis peserta. Walaupun orang tengah bertanggungjawab untuk menentukan antara muka untuk berkomunikasi dengan para peserta, orang tengah konkrit, seperti namanya, menerapkan antara muka mediator dan memiliki pengetahuan tentang para peserta. Perhatikan bahawa jenis peserta kadang-kadang dipanggil rakan sekerja. Oleh itu, dalam beberapa pelaksanaan, anda mempunyai jenis rakan sekerja dan rakan sekerja yang konkrit.

Sekarang, rujuk antara muka berikut. Ini adalah antara muka untuk orang tengah yang akan kita gunakan dalam contoh ini.

antarmuka awam Imediator

    {

        batal AddParticipant (peserta IP);

        batal BroadcastMessage (mesej rentetan, pengirim Peserta IP);

    }

Perhatikan bahawa antara muka ini mengandungi deklarasi dua kaedah, AddParticipant dan  BroadcastMessage. Walaupun yang pertama digunakan untuk menambahkan peserta ke senarai peserta yang dikendalikan oleh  ConcreteMediator kelas (diberikan di bawah), yang terakhir digunakan untuk menyiarkan mesej ke senarai peserta.

Inilah  ConcreteMediator kelasnya. Ia melaksanakan  IMediator antara muka. Saya meninggalkan pelaksanaan  BroadcastMessage kaedah untuk anda isikan.

kelas awam ConcreteMediator: Imediator

    {

        Senaraikan peserta = Senarai baru ();

        awam tidak sah AddParticipant (IP Peserta peserta)

        {

            peserta.Add (peserta);

        }

        kekosongan awam BroadcastMessage (mesej rentetan, pengirim IP)

        {

            // Tulis kod di sini untuk menyiarkan mesej kepada peserta

        }

    }

Antara IParticipantmuka mengandungi deklarasi  SendMessage kaedah.

antara muka awam Iparticipant

    {

        batal SendMessage (mesej rentetan);

    }

Berikut adalah contoh kelas peserta konkrit. Perhatikan bahawa kelas ini melaksanakan  IParticipant antara muka.

kelas awam KonkritPartisipan1: Iparticipant

    {

        orang tengah IMediator yang dilindungi;

        public ConcreteParticipant1 (pengantara IMediator)

        {

            ini. pengantara = pengantara;

        }

        kekosongan awam SendMessage (mesej rentetan)

        {

            mediator.SendMessage (mesej, ini);

        }

    }

    kelas awam ConcreteParticipant2: Iparticipant

    {

        orang tengah IMediator yang dilindungi;

        public ConcreteParticipant2 (pengantara IMediator)

        {

            ini. pengantara = pengantara;

        }

        kekosongan awam SendMessage (mesej rentetan)

        {

            mediator.SendMessage (mesej, ini);

        }

    }

Dan itu sahaja! Coretan kod berikut menunjukkan bagaimana anda boleh menggunakan semua jenis yang telah kami buat selama ini.

kekosongan statik Utama (string [] args)

    {

        Mediator IMediator = ConcreteMediator baru ();

        Peserta IP1 = ConcreteParticipant1 baru (orang tengah);

        Peserta IP2 = ConcreteParticipant2 baru (orang tengah);

        mediator.AddParticipant (peserta1);

        mediator.AddParticipant (peserta2);

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

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

        Konsol.ReadLine ();

    }

Corak reka bentuk mediator adalah corak tingkah laku yang mendorong gandingan longgar dengan memediasi komunikasi antara objek yang berbeza. Kerana pengantara memudahkan semua interaksi antara objek, objek ini dapat diubah sesuka hati. Yang paling penting, mereka tidak perlu mempunyai pengetahuan antara satu sama lain. Oleh itu, corak pengantara membantu anda menulis kod yang tersusun, dapat dikendalikan, dan mudah diuji.