komentotila on käyttäytymissuunnittelumalli, joka muuntaa pyynnön erilliseksi objektiksi, joka sisältää kaikki pyyntöön liittyvät tiedot. Tämän muunnoksen avulla voit parametroida menetelmiä erilaisiin pyyntöihin, viive- tai jonopyyntöihin perustuen ja toteuttaa peruuttamattomia toimintoja.
Komentotilan rakenne
lähettäjä (Lähettäjä) - tunnetaan myös nimellä "Invoker" - luokka vastaa pyynnön alustamisesta, jonka tulee sisältää jäsenmuuttuja viittauksen tallentamiseksi komentoobjektiin. Lähettäjä laukaisee komennon lähettämättä pyyntöä suoraan vastaanottajalle. Huomaa, että lähettäjä ei ole vastuussa komentoobjektin luomisesta: yleensä se saa valmiiksi luodun komennon asiakkaalta konstruktorin kautta.
Tilaus(Komento) -rajapinta ilmoittaa yleensä vain menetelmän komennon suorittamiseksi.
Erityiset tilaukset (Concrete Commands) toteuttaa erilaisia pyyntöjä. Tietty komento itsessään ei viimeistele työtä, vaan delegoi kutsun liiketoimintalogiikkaobjektille. Mutta koodin yksinkertaistamiseksi nämä luokat voidaan yhdistää. Objektin suoritustavan vastaanottamiseen tarvittavat parametrit voidaan ilmoittaa tiettyjen komentojen jäsenmuuttujiksi. Voit tehdä komentoobjektista muuttumattoman ja sallia vain näiden jäsenmuuttujien alustuksen konstruktorin kautta.
vastaanotin (Receiver) -luokka sisältää osan liiketoimintalogiikasta. Lähes mikä tahansa esine voi toimia vastaanottimena. Useimmat komennot käsittelevät vain yksityiskohtia siitä, kuinka pyyntö välitetään vastaanottajalle, ja vastaanottaja tekee varsinaisen työn itse.
asiakas (Client) luo ja määrittää tiettyjä komentoobjekteja. Asiakkaan on välitettävä kaikki pyyntöparametrit, mukaan lukien vastaanottajakokonaisuus, komennon rakentajalle. Sen jälkeen luotu komento voidaan liittää yhteen tai useampaan lähettäjään.