Design Pattern – Command Design Pattern Simplified

Det er mange Kommando mønster forklaring der ute, men jeg fant det litt vanskelig å fordøye eller forstå eksempelet gitt i disse blogger/innlegg.
så, her vil jeg prøve å forklare på den måten jeg forsto.

for å forstå kommandomønster kan vi gå tilbake til 1990-tallet da vi hadde store Tver uten fjernkontroll (i Hvert Fall I India). Gode gamle dager 😉

Vi hadde alle knottene for på / av, øke / redusere volumer.

Alt var bra, fungerte fint, det eneste problemet var hvis noen ønsket å slå TVEN på / av eller redusere / øke volumet, måtte de gå helt til TVEN og bruke knappen.

tenk nå dette på en objektorientert måte. EN TV er et objekt som har en rekke operasjoner / metoder / funksjoner eller «Kommando». VI har direkte tilgang TIL TV-objektet for å påkalle disse kommandoene.

problemet med denne tilnærmingen?

  1. du trenger objektet til å påkalle en kommando-derav gå hele veien TIL TV
  2. HVER TV har sin egen implementering av start/stopp, og vi er ikke i stand til å gjenbruke «Command invocation»
  3. hvis en annen enhet sier «Set-Top Box» ønsker samme funksjonalitet, ingen måte å gjenbruke de samme operasjonene — «Universal Remote»

Hvordan kan vi løse dette?

Tenk DEG AT TV-EN har et grensesnitt som implementerer på / av og annen funksjonalitet og eksponerer disse metodene/operasjonene, ved å gi forekomsten av grensesnittet til et «annet objekt». Det kan løse problemet vårt. La oss komme inn i kode:

Først vil vi lage EN TV-klasse, som har operasjonene på / av.

IDevice.java
TV.java

På Samme måte vil Vi lage En Set – top-boks klasse som vi lager en universell fjernkontroll.

SetTopBox.java

Nå som vi har definert våre enheter og dens operasjoner, trenger vi en klasse(Kommando) som kan holde objekter AV TV/SetTopBox og påkalle disse operasjonene.

La oss lage vår kommandoklasse. Da vi vil utføre to operasjoner på disse enhetene, Vil Kommandoklassen » ha » et Objekt Av IDevice-type.
vi trenger to kommandoer «PÅ» og «AV».
disse på / av-kommandoobjektene vil ha en utførelsesfunksjon / metode,som vil påkalle den respektive operasjonen på enheten den har.

Hvis du har lagt merke til, har jeg laget klassene med navnet «OnCommad» og ikke «TVOnCommand». Tanken er å gjenbruke kommandoklassen for forskjellige enheter. Det er vår universelle kommando, som støtter enhver enhet.
Dette vil gjøre det mulig for oss å lage en universell fjernkontroll. Bingo!!!!

Til nå har Vi abstrahert enhetens operasjoner i form av «Kommando». Det eneste som gjenstår for oss er å opprette En Fjernkontrollkontroll, for å utløse «kommandoen».

før vi lager fjernkontroll, må vi lage knapper og hver knapp vil utføre den respektive kommandoen.

RemoteButton-klassen har et kommandoobjekt, som utføres når knappen trykkes.

Fjernknappen.java

Til Slutt, la oss lage Vår Fjernkontroll Enhet, som vil ha flere knapper for hver operasjon.
Når vi lager en fjernkontroll enhet (ved hjelp av konstruktør), vil vi instantiere alle objektene og tildele.

RemoteControlDevice.java

hvis du ser på koden ovenfor, har vi definert flere knapper i Fjernkontrollen vår, og vi prøver Å Lage Universal remote.

Vi er alle satt til å lage og spille Med Vår RemoteControlDevice 🙂

Utgang:

TV is on!
TV is off!
SetTopBox is on!
SetTopBox is off!Process finished with exit code 0

som sett i utgang har jeg trykket på forskjellige knapper, for å utføre et sett med operasjoner på Enhetene.

så kort sagt er ideen å gi klienten (psvm / TV-bruker) en fjernkontroll i stedet for å få DEM til Å gå helt til TV ELLER gi TV til å slå PÅ/AV TV 😀

Konklusjon

I dette innlegget snakket vi om Kommandodesignmønsteret.
i enkle ord:

tanken er å innkapsle operasjonene i et annet objekt (Kommando) og gjenbruk og deretter opprette flere knapper for å utføre disse kommandoobjektene som har Enhetsoperasjoner i den.

som vanlig finner du all koden på GitHub.

You might also like

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.