Command
návrhový vzor
Návrhový vzor Command zapouzdřuje operaci a její parametry do objektu tak, aby šla kdykoliv později zavolat. Potřebné informace většinou zahrnují typ operace, názvy parametrů a jejich hodnoty.
Uživatel nejprve vytvoří instance příkazů, které chce provést. K dispozici má i výkonný objekt, kterému příkazy předá. Výkonný objekt vykoná režii kolem spuštění (například uložení do historie) a příkazy spustí. Každý příkaz potom vykoná svou práci na svém podřízeném objektu.
Příklady použití:
- definice akcí pro tlačítka GUI (v jazyce JAVA je to rozhraní Action)
- nahrávání makra (posloupnosti příkazů lze načítat a ukládat)
- historie operací s možností Undo / Redo
- vícevláknové zpracovávání (operace se ukládají do fronty a na pozadí je zpracovávají vlákna)
- transakční zpracování (operace se nashromáždí a na požádání atomicky spustí)
Implementace v jazyce Scala
trait Operace { def spustit()} class Vypinac { private var historie: List[Operace] = Nil def provest(cmd: Operace) { cmd.spustit() this.historie :+= cmd }} class Zarovka { def zapnout() = println("Sviti") def vypnout() = println("Nesviti")} class ZapnoutZarovku(zarovka: Zarovka) extends Operace { def spustit() = zarovka.zapnout()} class VypnoutZarovku(zarovka: Zarovka) extends Operace { def spustit() = zarovka.vypnout()} object ZkouskaZarovky { def main(args: Array[String]) { val zarovka = new Zarovka() val zapnout = new ZapnoutZarovku(zarovka) val vypnout = new VypnoutZarovku(zarovka) val vypinac = new Vypinac() vypinac.provest(zapnout); vypinac.provest(vypnout); vypinac.provest(zapnout); vypinac.provest(vypnout); }}
Související články
Externí odkazy
Obrázky, zvuky či videa k tématu Command na Wikimedia Commons
- [1]
Reference
🔥 Top keywords: Hlavní stranaSpeciální:HledáníMistrovství Evropy ve fotbale 2024Mistrovství Evropy ve fotbaleKateřina SvitkováNicolae StanciuJaroslav a Dana StodoloviMistrovství Evropy ve fotbale 2020SpartakusFilip TurekPeter PellegriniSpeciální:Poslední změnyMistrovství Evropy ve fotbale 2016Kylian MbappéČeskoDenguePavla RychláMistrovství světa ve fotbaleCristiano RonaldoDen otcůRomelu LukakuMohylaMuchomůrka tygrovanáDavid KobylíkSeverní SentinelLípa v Kamenici nad LipouKirk DouglasAlice CooperTrójaVojenský újezd LibaváPrvní světová válkaZuzana ČaputováDario G17. červenAlžběta BavorskáČeská fotbalová reprezentaceNěmeckoMistrovství světa ve fotbale 2022BRICS