Command

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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á. +more 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í [url=http://docs. oracle. +morecom/javase/8/docs/api/javax/swing/Action. html]Action[/url]) * 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. +moreprovest(vypnout); vypinac. provest(zapnout); vypinac. provest(vypnout); } }.

Externí odkazy

[http://voho.cz/wiki/command/]

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top