class Command
{
private var receiver: Receiver ;
private function Command( receiver:Receiver )
{
this.receiver = receiver;
}
public function Execute():Void{};
}
class Receiver
{
public function Action():Void
{
trace("Called Receiver.Action()");
}
}
class Invoker
{
private var command:Command ;
public function SetCommand( command:Command ):Void
{
this.command = command;
}
public function ExecuteCommand():Void
{
command.Execute();
}
}
class ConcreteCommand extends Command
{
public function ConcreteCommand(receiver:Receiver)
{
super(receiver);
}
public function Execute():Void
{
receiver.Action();
}
}
var r:Receiver = new Receiver();
var c:Command = new ConcreteCommand(r);
var i:Invoker = new Invoker();
i.SetCommand(c);
i.ExecuteCommand();