2010-12-06 46 views
2

可能somone指出在哪里可以找到一个命令模式的实现与onComplete回调,可以用于例如在串行宏命令?Java:使用onComplete回调简单实现命令模式?

乔纳斯

+2

GoF命令模式不包括回调。请添加更多信息或显示您真正想到的模式的网址参考。 – 2010-12-06 08:06:01

回答

8

试试这个

abstract class Command { 
    final public void execute(){ 
      run(); 
      onComplete(); 
    } 
    protected abstract void run(); 
    protected abstract void onComplete(); 
} 
//usage 
abstract class HiCommand extends Command { 
    protected void run(){ 
     System.out.println("Hi, "); 
    } 

    protected abstract void onComplete(); 
} 

new HiCommand(){ 
    @Override 
    protected void onComplete() { 
     System.out.println("world"); 
    } 
}.execute(); 

或本

interface WhenDone{ 
    void onComplete(); 
} 

abstract class Command { 
    private final WhenDone callback; 
    protected Command(WhenDone callback){ 
     this.callback = callback; 
    } 
    final public void execute(){ 
      run(); 
      callback.onComplete(); 
    } 
    protected abstract void run(); 
} 
//usage 
class PrintHi extends Command { 
    protected PrintHi(WhenDone callback){ 
     super(callback); 
    } 

    protected void run(){ 
     System.out.println("Hi, "); 
    } 
} 

class PrintWorld implements WhenDone { 
    public void onComplete(){ 
     System.out.println("world!"); 
    } 
} 
//somewhere 
new PrintHi(new PrintWorld()).execute(); 

使用的例子是不是来自真实的生活。很可能,您应该通过创建CommandManager将创建和调用执行分开。

+0

谢谢,斯塔斯!嗯...现在我必须弄清楚那个父回调命令是怎么样的。我不会否认你的意见。 :-) – Cambiata 2010-12-06 08:18:15