2010-12-06 1 views
2

Может ли кто-нибудь указать, где найти реализацию шаблона Command с onComplete обратными вызовами, которые могут быть использованы, например, в команде последовательного макроса?Java: Простая реализация шаблона команды с обратным вызовом onComplete?

Jonas

+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

 Смежные вопросы

  • Нет связанных вопросов^_^