Programmering

Hvordan bruke formidlermønsteret i C #

Designmønstre brukes til å løse vanlige designproblemer og redusere kompleksiteten i koden vår. Formidlersmønsteret er et atferdsmønster som fremmer løs kobling mellom objekter og hjelper til med å organisere koden for kommunikasjon mellom objekter.

Denne artikkelen presenterer en diskusjon om formidlermønsteret for megler og hvordan det kan implementeres ved hjelp av C #.

Hva er formidlerens mønster?

Se for deg et program der det er mange objekter som kommuniserer med hverandre. Formidlerens mønster er nyttig når antall objekter blir så store at det blir vanskelig å opprettholde referansene til objektene. Megleren er egentlig et objekt som innkapsler hvordan et eller flere objekter samhandler med hverandre. Formidlermønsteret for formidler styrer hvordan disse objektene kommuniserer, og hjelper til med å redusere antall avhengigheter blant dem du må administrere.

I formidlermønsteret for megler kommuniserer ikke objektene direkte, men gjennom mekleren. Når et objekt trenger å kommunisere med et annet objekt eller et sett med objekter, overfører det meldingen til megleren. Megleren overfører deretter meldingen til hvert mottakerobjekt i en form som er forståelig for den.

Ved å eliminere den direkte kommunikasjonen mellom objekter, fremmer formidlermønsteret løs kobling. Den andre fordelen med å bruke formidlermønsteret for megler er at det forbedrer kodelesbarhet og vedlikehold. For godt mål, her er den offisielle Gang of Four-definisjonen av meglermønsteret:

Definer et objekt som innkapsler hvordan et sett med objekter samhandler. Mediator fremmer løs kobling ved å forhindre at objekter refererer til hverandre eksplisitt, og det lar deg variere deres interaksjon uavhengig.

Merk at formidlingsmønsteret for megler skiller seg fra fasademønsteret. Mediatormønsteret letter hvordan et sett med objekter samhandler, mens fasademønsteret ganske enkelt gir et enhetlig grensesnitt til et sett med grensesnitt i applikasjonen. Dermed er meklingsmønsteret et atferdsmønster som omhandler objektatferd, fasademønsteret er et strukturelt mønster som omhandler objektsammensetning.

Implementering av mediator-designmønsteret i C #

Men nok av konseptene - la oss komme inn på noen kode. Deltakerne i dette designet er formidleren, den konkrete formidleren og en eller flere deltakertyper. Mens megleren er ansvarlig for å definere grensesnittet for å kommunisere med deltakerne, implementerer den konkrete megleren, som navnet antyder, meklergrensesnittet og har kunnskap om deltakerne. Merk at deltakertypen noen ganger kalles en kollega. Så i noen implementeringer har du kollega- og konkrete kollega-typer.

Se nå følgende grensesnitt. Dette er grensesnittet for megleren vi skal bruke i dette eksemplet.

offentlig grensesnitt Imediator

    {

ugyldig AddParticipant (IPParticipant participant);

ugyldig BroadcastMessage (strengmelding, IP-deltaker avsender);

    }

Merk at dette grensesnittet inneholder erklæringen om to metoder, Legg tilDeltaker ogBroadcastMessage. Mens førstnevnte brukes til å legge til deltakere i en liste over deltakere som vedlikeholdes avConcreteMediator klasse (gitt nedenfor), brukes sistnevnte til å kringkaste meldinger til listen over deltakerne.

Her erConcreteMediator klasse. Den implementererIMediator grensesnitt. Jeg forlater implementeringen avBroadcastMessage metode for å fylle ut.

offentlig klasse ConcreteMediator: Imediator

    {

Listedeltakere = ny List ();

offentlig ugyldig AddParticipant (IParticipant participant)

        {

deltagere.Legg til (deltaker);

        }

offentlig ugyldig BroadcastMessage (strengmelding, IP-deltaker avsender)

        {

// Skriv kode her for å kringkaste meldingen til deltakerne

        }

    }

De IDeltaker grensesnittet inneholder erklæringen omSende melding metode.

offentlig grensesnitt Iparticipant

    {

ugyldig SendMessage (strengmelding);

    }

Her er et eksempel på de konkrete deltakerklassene. Merk at disse klassene implementererIDeltaker grensesnitt.

offentlig klasse ConcreteParticipant1: Iparticipant

    {

beskyttet IMediator-megler;

offentlig betongDeltaker1 (IMediator megler)

        {

this.mediator = megler;

        }

offentlig ugyldig SendMessage (strengmelding)

        {

megler.SendMessage (melding, dette);

        }

    }

offentlig klasse ConcreteParticipant2: Iparticipant

    {

beskyttet IMediator-megler;

public ConcreteParticipant2 (IMediator mediator)

        {

this.mediator = megler;

        }

offentlig ugyldig SendMessage (strengmelding)

        {

megler.SendMessage (melding, dette);

        }

    }

Og det er det! Følgende kodebit viser hvordan du kan bruke alle typene vi hittil har bygget.

statisk tomrom Main (streng [] args)

    {

IMediator mediator = ny ConcreteMediator ();

IPdeltaker deltaker1 = ny ConcreteParticipant1 (megler);

IParticipant participant2 = new ConcreteParticipant2 (mediator);

megler.AddDeltaker (deltaker1);

megler.AddDeltaker (deltaker2);

deltaker1.SendMessage ("Dette er den første deltakeren");

deltaker2.SendMessage (“Dette er den andre deltakeren”);

Console.ReadLine ();

    }

Formidlingsmønsteret for megler er et atferdsmønster som fremmer løs kobling ved å formidle kommunikasjonen mellom forskjellige objekter. Fordi megler forenkler alle interaksjoner mellom objekter, kan disse objektene endres etter eget ønske. Viktigst, de trenger ikke ha kunnskap om hverandre. Dermed hjelper meglermønsteret deg med å skrive velstrukturert, vedlikeholdbar og lett testbar kode.

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