2010-12-06 21 views
2

シリアル・マクロ・コマンドなどで使用できるonCompleteコールバックを持つCommandパターンの実装をどこから見つけるべきかを指摘できますか?Java:onCompleteコールバックでコマンドパターンを簡単に実装できますか?

ジョナス

+2

GoFコマンドパターンにはコールバックが含まれていません。より多くの情報を追加するか、実際に覚えているパターンへのURL参照を表示してください。 –

答えて

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

ありがとう、Stas!うーん...今、親コールバックコマンドがどのように見えるのかを理解する必要があります。私はあなたの意見を否定しません。 :-) – Cambiata

+0

@Cambiata、更新されました。 –

+1

ありがとう、Stas! – Cambiata