2010-12-06 68 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