Hvordan man bruger mediator design mønster i C #

Designmønstre bruges til at løse fælles designproblemer og reducere kompleksiteten i vores kode. Mæglermønsteret er et adfærdsmønster, som fremmer løs kobling mellem genstande og hjælper med at organisere koden til inter-objektkommunikation.

Denne artikel præsenterer en diskussion af mediator design mønster og hvordan det kan implementeres ved hjælp af C #.

Hvad er mediator design mønster?

Forestil dig en applikation, hvor der er mange objekter, der kommunikerer med hinanden. Mediator design mønster er nyttigt, når antallet af objekter vokser så stort, at det bliver vanskeligt at opretholde referencerne til objekterne. Mægleren er i det væsentlige et objekt, der indkapsler, hvordan en eller flere objekter interagerer med hinanden. Mediator design mønster styrer hvordan disse objekter kommunikerer, og hjælper med at reducere antallet af afhængigheder blandt dem, som du skal klare.

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

Ved at eliminere den direkte kommunikation mellem objekter fremmer mediatordesignmønsteret løs kobling. Den anden fordel ved at bruge mediator design mønster er, at det forbedrer kodens læsbarhed og vedligeholdelighed. For godt mål er her den officielle Gang med fire definitioner af mediator mønster:

Definer et objekt, der indkapsler, hvordan et sæt objekter interagerer. Mediator fremmer løs kobling ved at holde objekter fra at henvise til hinanden eksplicit, og det lader dig ændre deres interaktion uafhængigt.

Bemærk at mediator design mønster adskiller sig fra facade design mønster. Mediatormø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. Mediatormønsteret er således et adfærdsmønster, der beskæftiger sig med objektadfærd, fasademønsteret er et strukturelt mønster, der beskæftiger sig med objektets sammensætning.

Implementering af mediator design mønster i C #

Men nok af begreberne - lad os komme ind i nogle kode. Deltagerne i dette design er mægler, betonmægler og en eller flere deltagertyper. Selvom mægleren er ansvarlig for at definere grænsefladen for at kommunikere med deltagerne, implementerer betonmægleren, som navnet antyder, mediatorinterfacet og har kendskab til deltagerne. Bemærk, at deltagerstypen undertiden kaldes en kollega. Så i nogle implementeringer har du kollegaer og konkrete kollegetyper.

Se nu følgende grænseflade. Dette er grænsefladen for mægleren, vi vil bruge i dette eksempel.

offentlig grænseflade Imediator {void AddParticipant (deltager deltager); void BroadcastMessage (strengmeddelelse, IP-deltagers afsender); }

Bemærk, at denne grænseflade indeholder en angivelse af to metoder, AddParticipant og BroadcastMessage. Mens den tidligere er brugt til at tilføje deltagere til en liste over deltagere, der opretholdes af ConcreteMediator klassen (angivet nedenfor), sidstnævnte bruges til at sende meddelelser til deltagerlisten.

Her er den ConcreteMediator klasse. Det implementerer IMediator grænseflade. Jeg forlader implementeringen af BroadcastMessage metode til at udfylde.

offentlig klasse ConcreteMediator: Imediator {List <IP participant> deltagere = ny liste <IParticipant> (); Offentligt ugyldigt AddParticipant (deltager deltager) {deltagere.Add (deltager); } Offentlig ugyldig BroadcastMessage (strengmeddelelse, IP-deltagende sender) {// Skriv kode her for at sende meddelelsen til deltagerne}}

Den IParticipant grænseflade indeholder erklæringen fra Send besked fremgangsmåde.

offentlig grænseflade Iparticipant {void SendMessage (strengmeddelelse); }

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

offentlig klasse ConcreteParticipant1: Iparticipant {protected IMediator mediator; offentlig ConcreteParticipant1 (IMediator mediator) {this.mediator = mediator; } public void SendMessage (strengmeddelelse) {mediator.SendMessage (meddelelse, dette); }} offentlig klasse ConcreteParticipant2: Iparticipant {protected IMediator mediator; offentlig ConcreteParticipant2 (IMediator mediator) {this.mediator = mediator; } public void SendMessage (strengmeddelelse) {mediator.SendMessage (meddelelse, dette); }}

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

statisk tomrum Main (string [] args) {IMediator mediator = ny ConcreteMediator (); Deltager deltager1 = ny konkret deltager xNUMX (mægler); Deltager deltager1 = ny konkret deltager xNUMX (mægler); mediator.AddParticipant (participant2); mediator.AddParticipant (participant2); participant1.SendMessage ("Dette er den første deltager"); participant2.SendMessage ("Dette er den anden deltager"); Console.ReadLine (); }

Mediator design mønster 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. Mediatormønsteret hjælper dig således med at skrive velstruktureret, vedligeholdelig og let testbar kode.

Kilde

Efterlad en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.