Programovanie

Ako používať návrhový vzor mediátora v C #

Dizajnové vzory sa používajú na riešenie bežných problémov s dizajnom a na zníženie zložitosti nášho kódu. Mediátorový vzor je vzor návrhu správania, ktorý podporuje voľné spojenie medzi objektmi a pomáha organizovať kód pre komunikáciu medzi objektmi.

Tento článok predstavuje diskusiu o dizajnovom vzore mediátora a o tom, ako ho možno implementovať pomocou jazyka C #.

Aký je návrhový vzor mediátora?

Predstavte si aplikáciu, v ktorej je veľa objektov, ktoré navzájom komunikujú. Návrhový vzor mediátora je užitočný, keď počet objektov stúpne tak vysoko, že je ťažké udržať odkazy na objekty. Sprostredkovateľ je v podstate objekt, ktorý zapuzdruje vzájomné pôsobenie jedného alebo viacerých objektov. Návrhový vzor mediátora riadi komunikáciu týchto objektov a pomáha znižovať počet závislostí medzi nimi, ktoré musíte spravovať.

V dizajnovom vzore sprostredkovateľa objekty nekomunikujú navzájom priamo, ale prostredníctvom sprostredkovateľa. Ak objekt potrebuje komunikáciu s iným objektom alebo súborom objektov, odošle správu sprostredkovateľovi. Sprostredkovateľ potom odošle správu každému objektu prijímača v podobe, ktorá je pre neho zrozumiteľná.

Elimináciou priamej komunikácie medzi objektmi podporuje návrhový vzor mediátora voľné spojenie. Ďalšou výhodou použitia návrhového vzoru mediátora je, že zlepšuje čitateľnosť a udržiavateľnosť kódu. Pre dobrú mieru, tu je oficiálna definícia mediátorského vzoru Gang zo štyroch:

Definujte objekt, ktorý zapuzdruje spôsob interakcie sady objektov. Aplikácia Mediator podporuje voľnú väzbu tým, že bráni objektom v explicitnom vzájomnom odkazovaní sa, a umožňuje vám nezávisle meniť ich interakciu.

Upozorňujeme, že vzor návrhu sprostredkovateľa sa líši od vzoru návrhu fasády. Vzor sprostredkovateľa uľahčuje interakciu sady objektov, zatiaľ čo vzor fasády poskytuje jednotné rozhranie so sadou rozhraní v aplikácii. Mediátorový vzor je teda vzor správania, ktorý sa zaoberá správaním objektu, vzor fasády je štruktúrny vzor, ​​ktorý sa zaoberá kompozíciou objektu.

Implementácia návrhového vzoru mediátora v C #

Ale dosť konceptov - poďme sa venovať nejakému kódu. Účastníkmi tohto návrhu sú mediátor, konkrétny mediátor a jeden alebo viac typov účastníkov. Zatiaľ čo mediátor je zodpovedný za definovanie rozhrania pre komunikáciu s účastníkmi, konkrétny mediátor, ako už názov napovedá, implementuje rozhranie mediátora a má vedomosti o účastníkoch. Upozorňujeme, že typ účastníka sa niekedy nazýva kolega. Takže v niektorých implementáciách máte typy kolegov a konkrétnych kolegov.

Teraz si pozrite nasledujúce rozhranie. Toto je rozhranie pre mediátora, ktoré použijeme v tomto príklade.

verejné rozhranie Imediator

    {

void AddParticipant (IParticipant participant);

void BroadcastMessage (reťazcová správa, odosielateľ IP účastníka);

    }

Toto rozhranie obsahuje deklaráciu dvoch metód, AddParticipant aBroadcastMessage. Zatiaľ čo prvé sa používa na pridanie účastníkov do zoznamu účastníkov vedeného organizáciouConcreteMediator triedy (uvedená nižšie), druhá sa používa na vysielanie správ do zoznamu účastníkov.

Tu jeConcreteMediator trieda. VykonávaIMediator rozhranie. Opúšťam implementáciuBroadcastMessage spôsob vyplnenia.

verejná trieda ConcreteMediator: Imediator

    {

Zoznam účastníkov = nový Zoznam ();

public void AddParticipant (IParticipant participant)

        {

účastníci.Pridať (účastník);

        }

public void BroadcastMessage (textová správa, odosielateľ účastníka IP)

        {

// Sem napíšete kód, ktorý správu odošle účastníkom

        }

    }

The Účastník Rozhranie obsahuje vyhláseniePoslať správu metóda.

verejné rozhranie účastník

    {

void SendMessage (reťazcová správa);

    }

Tu je príklad konkrétnych tried účastníkov. Upozorňujeme, že tieto triedy implementujúÚčastník rozhranie.

verejná trieda ConcreteParticipant1: Iparticipant

    {

chránený mediátor IMediator;

public ConcreteParticipant1 (IMediator mediator)

        {

this.mediator = mediátor;

        }

public void SendMessage (reťazcová správa)

        {

mediator.SendMessage (správa, táto);

        }

    }

verejná trieda ConcreteParticipant2: Iparticipant

    {

chránený mediátor IMediator;

public ConcreteParticipant2 (mediátor IMediator)

        {

this.mediator = mediátor;

        }

public void SendMessage (reťazcová správa)

        {

mediator.SendMessage (správa, táto);

        }

    }

A to je všetko! Nasledujúci úryvok kódu ukazuje, ako môžete použiť všetky typy, ktoré sme doteraz vytvorili.

static void Main (reťazec [] args)

    {

Sprostredkovateľ IMediator = nový ConcreteMediator ();

IParticipant participant1 = new ConcreteParticipant1 (mediator);

IParticipant participant2 = new ConcreteParticipant2 (mediator);

mediator.AddParticipant (participant1);

mediator.AddParticipant (participant2);

participant1.SendMessage („Toto je prvý účastník“);

participant2.SendMessage („Toto je druhý účastník“);

Console.ReadLine ();

    }

Návrhový vzor mediátora je vzor správania, ktorý podporuje voľné spojenie sprostredkovaním komunikácie medzi rôznymi objektmi. Pretože sprostredkovateľ umožňuje všetky interakcie medzi objektmi, tieto objekty je možné ľubovoľne meniť. Najdôležitejšie je, že nemusia mať vzájomné znalosti. Takto vám vzor sprostredkovateľa pomôže napísať dobre štruktúrovaný, udržiavateľný a ľahko testovateľný kód.

$config[zx-auto] not found$config[zx-overlay] not found