Programavimas

Kaip naudoti tarpininko dizaino modelį C #

Dizaino modeliai naudojami siekiant išspręsti įprastas dizaino problemas ir sumažinti mūsų kodo sudėtingumą. Tarpininko modelis yra elgesio dizaino modelis, skatinantis laisvą susiejimą tarp objektų ir padedantis tvarkyti tarp objektų vykdomo ryšio kodą.

Šiame straipsnyje aptariama tarpininko dizaino schema ir tai, kaip ją galima įgyvendinti naudojant C #.

Koks yra tarpininko dizaino modelis?

Įsivaizduokite programą, kurioje yra daug objektų, kurie bendrauja tarpusavyje. Tarpininko dizaino modelis yra naudingas, kai objektų skaičius išauga toks didelis, kad tampa sunku išlaikyti nuorodas į objektus. Tarpininkas iš esmės yra objektas, apimantis vieno ar kelių objektų sąveiką. Tarpininko dizaino modelis kontroliuoja, kaip šie objektai bendrauja, ir padeda sumažinti priklausomybių tarp jų, kurias turite valdyti, skaičių.

Pagal tarpininko dizaino modelį objektai bendrauja ne tiesiogiai, o per tarpininką. Kai objektui reikia bendrauti su kitu objektu ar objektų rinkiniu, jis perduoda pranešimą tarpininkui. Tada tarpininkas perduoda pranešimą kiekvienam imtuvui objektui jam suprantama forma.

Pašalinant tiesioginį ryšį tarp objektų, tarpininko dizaino modelis skatina laisvą sujungimą. Kitas tarpininko dizaino modelio naudojimo pranašumas yra tas, kad jis pagerina kodo įskaitomumą ir palaikomumą. Gerai, čia yra oficialus „Keturių gauja“ apibrėžimas tarpininko modelio:

Apibrėžkite objektą, kuris apima objektų rinkinio sąveiką. Tarpininkas skatina laisvą sujungimą, neleisdamas objektams aiškiai kreiptis į vienas kitą, ir tai leidžia savarankiškai keisti jų sąveiką.

Atkreipkite dėmesį, kad tarpininko dizaino modelis skiriasi nuo fasado dizaino modelio. Tarpininko modelis palengvina objektų rinkinio sąveiką, o fasado modelis paprasčiausiai suteikia vieningą sąsają su sąsajų rinkiniu programoje. Taigi tarpininko modelis yra elgesio modelis, susijęs su objekto elgesiu, fasado modelis yra struktūrinis modelis, susijęs su objekto komponavimu.

Tarpininko dizaino modelio įgyvendinimas C #

Tačiau pakanka sąvokų - eikime į tam tikrą kodą. Šio projekto dalyviai yra tarpininkas, konkretus tarpininkas ir vienas ar daugiau dalyvių tipų. Nors tarpininkas yra atsakingas už sąsajos nustatymą bendraujant su dalyviais, konkretus tarpininkas, kaip rodo pavadinimas, įgyvendina tarpininko sąsają ir turi dalyvių žinių. Atkreipkite dėmesį, kad dalyvio tipas kartais vadinamas kolega. Taigi kai kuriuose įgyvendinimuose turite kolegų ir konkrečių kolegų tipų.

Dabar žiūrėkite šią sąsają. Tai yra tarpininko, kurį naudosime šiame pavyzdyje, sąsaja.

viešoji sąsaja

    {

negaliojantis „AddParticipant“ („IParticipant“ dalyvis);

negaliojantis BroadcastMessage (eilutės pranešimas, „IParticipant“ siuntėjas);

    }

Atkreipkite dėmesį, kad šioje sąsajoje yra dviejų metodų deklaracija, „AddParticipant“ ir„BroadcastMessage“. Nors pirmoji naudojama įtraukti dalyvius į dalyvių sąrašą, kurį tvarkoBetonas Tarpininkas klasė (pateikta žemiau), pastaroji naudojama pranešimams transliuoti į dalyvių sąrašą.

Čia yraBetonas Tarpininkas klasė. Jis įgyvendinaIMediatorius sąsaja. Palieku diegti„BroadcastMessage“ metodas jums užpildyti.

visuomenės klasė „ConcreteMediator“: „Imediator“

    {

Sąrašo dalyviai = naujas sąrašas ();

public void „AddParticipant“ („IParticipant“ dalyvis)

        {

dalyviai.Pridėti (dalyvis);

        }

public void BroadcastMessage (eilutės pranešimas, „IParticipant“ siuntėjas)

        {

// Parašykite kodą čia, norėdami perduoti pranešimą dalyviams

        }

    }

Idalyvis sąsajoje yraSiųsti žinutę metodas.

viešoji sąsaja

    {

anuliuoti „SendMessage“ (eilutės pranešimas);

    }

Čia pateikiamas konkrečių dalyvių klasių pavyzdys. Atkreipkite dėmesį, kad šios klasės įgyvendinaIdalyvis sąsaja.

viešoji klasė „ConcreteParticipant1“: „Dalyvis“

    {

saugomas „IMediator“ tarpininkas;

public ConcreteParticipant1 („IMediator mediator“)

        {

tai.mediatorius = tarpininkas;

        }

public void „SendMessage“ (eilutės pranešimas)

        {

tarpininkas.SendMessage (žinutė, tai);

        }

    }

viešoji klasė „ConcreteParticipant2“: „Dalyvis“

    {

saugomas „IMediator“ tarpininkas;

public ConcreteParticipant2 („IMediator“ tarpininkas)

        {

tai.mediatorius = tarpininkas;

        }

public void „SendMessage“ (eilutės pranešimas)

        {

tarpininkas.SendMessage (žinutė, tai);

        }

    }

Štai ir viskas! Šis kodo fragmentas parodo, kaip galite naudoti visus mūsų sukurtus tipus.

static void Main (string [] args)

    {

„IMediator mediator“ = naujas „ConcreteMediator“ ();

„IParticipant dalyvis1“ = naujas „ConcreteParticipant1“ (tarpininkas);

„IParticipant dalyvis2“ = naujas „ConcreteParticipant2“ (tarpininkas);

tarpininkas.AddParticipant (dalyvis1);

tarpininkas.AddParticipant (dalyvis2);

dalyvis1.SendMessage („Tai pirmasis dalyvis“);

dalyvis2.SendMessage („Tai antras dalyvis“);

Pultas.ReadLine ();

    }

Tarpininko dizaino modelis yra elgesio modelis, skatinantis laisvą sujungimą, tarpininkaujant tarp skirtingų objektų. Kadangi tarpininkas palengvina bet kokią sąveiką tarp objektų, šiuos objektus galima pakeisti savo nuožiūra. Svarbiausia, kad jiems nereikia turėti jokių žinių apie vienas kitą. Taigi tarpininko modelis padeda jums parašyti gerai struktūrizuotą, prižiūrimą ir lengvai patikrinamą kodą.

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