Design Pattern – Command Design Pattern Simplified

on olemassa monia Komentokuvioselityksiä, mutta minun oli hieman vaikea sulattaa tai ymmärtää noissa blogeissa/viesteissä annettua esimerkkiä.
niin, tässä yritän selittää ymmärtämälläni tavalla.

komentokuvion ymmärtämiseksi palataan 1990-luvulle, jolloin meillä oli valtavat Televisiot ilman kaukosäädintä(ainakin Intiassa). Vanhat hyvät ajat 😉

meillä oli kaikki nupit päälle / pois, lisätä / vähentää määriä.

kaikki oli hyvin, toimi hyvin, ainoa ongelma oli, Jos joku halusi kytkeä television päälle/pois tai vähentää/lisätä äänenvoimakkuutta, hänen piti mennä TV: hen asti ja käyttää nuppia.

ajattele tätä nyt oliokeskeisesti. Televisio on objekti, jossa on joukko toimintoja/menetelmiä/toimintoja tai ”Komento”. Käytämme suoraan TV-objektia kutsuaksemme nämä komennot.

mikä tämän lähestymistavan ongelma on?

  1. tarvitset objektin komennon kutsumiseen-näin ollen kävele aina televisioon asti
  2. jokaisessa TV: ssä on oma start/stop-toteutuksensa, emmekä voi käyttää uudelleen ”Komentokutsua”
  3. jos toinen laite sanoo ” digisovitin ”haluaa samat toiminnot, ei mahdollisuutta käyttää samoja toimintoja uudelleen- ”Universal Remote”

miten voimme ratkaista tämän?

Kuvittele, että TV: ssä on käyttöliittymä, joka toteuttaa on/off-ja muita toimintoja ja altistaa nämä menetelmät/operaatiot antamalla käyttöliittymän ilmentymän ”toiselle objektille”. Se voisi ratkaista ongelmamme. Mennään koodiin:

ensin luodaan TV-luokka, jossa on toiminnot on / off.

IDevice.Jaava
televisio.java

samoin luomme Digiboksiluokan, koska luomme yleiskaukosäätimen.

Setupbox.java

nyt kun olemme määritelleet laitteemme ja sen toiminnot, tarvitsemme luokan(komennon), joka voi säilyttää TV/SetTopBox-objekteja ja käyttää näitä toimintoja.

luodaan komentoluokkamme. Koska haluamme suorittaa kaksi toimintaa näillä laitteilla, Komentoluokka ” on ” objekti IDevice tyyppi.
tarvitaan kaksi komentoa ” ON ”ja”OFF”.
näillä On/Off-komennoilla on yksi suoritustoiminto/ – menetelmä, joka käynnistää vastaavan toiminnon laitteessa, joka sillä on.

jos olet huomannut, olen luonut luokat nimi ” OnCommad ”eikä”TVOnCommand”. Ajatuksena on käyttää komentoluokkaa uudelleen eri laitteille. Se on yleiskomentomme, joka tukee mitä tahansa laitetta.
näin voidaan luoda yleiskaukosäädin. Bingo!!!!

tähän asti olemme abstrahoineet laitteen toiminnot ”komennon”muodossa. Ainoa asia, joka jää meille on luoda Kauko-ohjaus, käynnistää ”komento”.

ennen kaukosäätimen luomista on luotava painikkeet ja jokainen painike suorittaa vastaavan komennon.

RemoteButton-luokassa on komentoobjekti, joka suoritetaan nappia painettaessa.

RemoteButton.java

lopuksi luodaan kauko-ohjauslaite, jossa on useita painikkeita jokaista toimintoa varten.
kun luomme kaukosäätimen (constructorin avulla), asennamme kaikki objektit ja määritämme ne.

Etävalvontalaite.java

jos katsot yllä olevaa koodia, olemme määritelleet useita painikkeita kauko-ohjaimessamme ja yritämme tehdä Yleiskaukosäätöä.

olemme kaikki valmiita luomaan ja leikkimään Etäkontrollilaitteellamme 🙂

tuloste:

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

kuten näkyy lähtö Olen painanut eri painikkeita, suorittaa joukko toimintoja laitteissa.

lyhyesti sanottuna ajatuksena on antaa asiakkaalle(psvm/TV-käyttäjä) kaukosäädin sen sijaan, että heidät pakotettaisiin kävelemään TV :n ääreen tai antamaan TV päälle/pois: D

johtopäätös

tässä viestissä puhuttiin Komentosuunnittelukuviosta.
yksinkertaisilla sanoilla:

ideana on kapseloida toiminnot eri objektiin(komento) ja käyttää uudelleen ja luoda sitten useita painikkeita näiden komentoobjektien toteuttamiseksi, joissa on laitteen toimintoja.

kuten tavallista, kaikki koodi löytyy Githubistani.

You might also like

Vastaa

Sähköpostiosoitettasi ei julkaista.