Programmering

Sådan bruges formidlerens mønster i C #

Designmønstre bruges til at løse almindelige designproblemer og reducere kompleksiteten i vores kode. Formidlermønsteret er et adfærdsmæssigt designmønster, der fremmer løs kobling mellem objekter og hjælper med at organisere koden til kommunikation mellem objekter.

Denne artikel præsenterer en diskussion af formidlingsmønsteret for mediator, og hvordan det kan implementeres ved hjælp af C #.

Hvad er mæglerens designmønster?

Forestil dig et program, hvor der er mange objekter, der kommunikerer med hinanden. Formidlingsdesignmønsteret er nyttigt, når antallet af objekter bliver så stort, at det bliver svært at opretholde referencerne til objekterne. Mægleren er i det væsentlige et objekt, der indkapsler, hvordan et eller flere objekter interagerer med hinanden. Formidlingsdesignmønsteret styrer, hvordan disse objekter kommunikerer, og hjælper med at reducere antallet af afhængigheder blandt dem, som du skal administrere.

I formidlingsmønsteret for mediator kommunikerer objekterne ikke direkte med hinanden, men gennem mediatoren. Når et objekt skal kommunikere med et andet objekt eller et sæt objekter, sender det meddelelsen til mægleren. Mægleren sender derefter meddelelsen til hvert modtagerobjekt i en form, der er forståelig for den.

Ved at eliminere den direkte kommunikation mellem objekter fremmer formidlermønsteret løs kobling. Den anden fordel ved at bruge formidlermønsteret er, at det forbedrer kodelæsbarhed og vedligeholdelsesevne. For godt mål er her den officielle bande af fire definition af mediator mønster:

Definer et objekt, der indkapsler, hvordan et sæt objekter interagerer. Mægler fremmer løs kobling ved at forhindre objekter i at henvise eksplicit til hinanden, og det lader dig variere deres interaktion uafhængigt.

Bemærk, at formidlermønsteret for mægler adskiller sig fra facademønsteret. Formidlermønsteret letter, hvordan et sæt objekter interagerer, mens facademønsteret simpelthen giver en samlet grænseflade til et sæt grænseflader i applikationen. Således er mediator mønster et adfærdsmønster, der beskæftiger sig med objektadfærd, facademønsteret er et strukturelt mønster, der beskæftiger sig med objektsammensætning.

Implementering af mønsteret for mediatordesign i C #

Men nok af begreberne - lad os komme ind i en kode. Deltagerne i dette design er mediatoren, den konkrete mediator og en eller flere deltagertyper. Mens mægleren er ansvarlig for at definere grænsefladen til kommunikation med deltagerne, implementerer den konkrete mægler, som navnet antyder, mæglergrænsefladen og har kendskab til deltagerne. Bemærk, at deltagertypen undertiden kaldes en kollega. Så i nogle implementeringer har du kollega og konkrete kollega typer.

Se nu følgende grænseflade. Dette er grænsefladen til den mægler, vi bruger i dette eksempel.

offentlig grænseflade Imediator

    {

ugyldig AddParticipant (IPParticipant participant);

ugyldig BroadcastMessage (streng besked, IP-deltager afsender);

    }

Bemærk, at denne grænseflade indeholder erklæringen om to metoder, TilføjDeltager ogBroadcastMessage. Mens førstnævnte bruges til at føje deltagere til en liste over deltagere vedligeholdt afConcreteMediator klasse (angivet nedenfor), sidstnævnte bruges til at sende meddelelser til listen over deltagerne.

Her erConcreteMediator klasse. Det implementererIMediator interface. Jeg forlader implementeringen afBroadcastMessage metode til at udfylde.

offentlig klasse ConcreteMediator: Imediator

    {

Listedeltagere = ny liste ();

offentlig ugyldighed AddParticipant (IPdeltager deltager)

        {

deltagere.Tilføj (deltager);

        }

offentlig ugyldig BroadcastMessage (streng besked, IP-deltager afsender)

        {

// Skriv kode her for at sende meddelelsen til deltagerne

        }

    }

Det IPeltager interface indeholder erklæringen omSend besked metode.

offentlig grænseflade Iparticipant

    {

ugyldigt SendMessage (streng besked);

    }

Her er et eksempel på de konkrete deltagerklasser. Bemærk, at disse klasser implementererIPeltager interface.

offentlig klasse ConcreteParticipant1: Iparticipant

    {

beskyttet IMediator-mægler

offentlig betonDeltager1 (IMediator-mægler)

        {

this.mediator = mægler;

        }

offentlig ugyldighed SendMessage (streng besked)

        {

mægler.SendMessage (besked, dette);

        }

    }

offentlig klasse ConcreteParticipant2: Iparticipant

    {

beskyttet IMediator-mægler

offentlig ConcreteParticipant2 (IMediator mediator)

        {

this.mediator = mægler;

        }

offentlig ugyldighed SendMessage (streng besked)

        {

mægler.SendMessage (besked, dette);

        }

    }

Og det er det! Følgende kodestykke viser, hvordan du kan bruge alle de typer, vi hidtil har bygget.

statisk ugyldigt Main (streng [] args)

    {

IMediator mediator = ny ConcreteMediator ();

IPdeltager-deltager1 = ny ConcreteDeltager1 (mægler);

IPdeltager-deltager2 = ny ConcreteDeltager-deltager2 (mægler);

mægler.AddDeltager (deltager1);

mægler.AddDeltager (deltager2);

deltager1.SendMessage (“Dette er den første deltager”);

deltager2.SendMessage (“Dette er den anden deltager”);

Console.ReadLine ();

    }

Formidlingsmønsteret for mediator er et adfærdsmønster, der fremmer løs kobling ved at formidle kommunikationen mellem forskellige objekter. Fordi mægleren letter alle interaktioner mellem objekter, kan disse objekter ændres efter ønske. Vigtigst er det, at de ikke behøver at have kendskab til hinanden. Således hjælper mediatormønsteret dig med at skrive velstruktureret, vedligeholdelig og let testbar kode.