Использование Шаблона разработки Команды

Может любой объяснять с простым примером Шаблона "команда". Я отношусь в Интернете, но я запутался.

14
задан BalusC 28 January 2016 в 18:36
поделиться

1 ответ

public interface Command {
   public void execute();
}

По большей части команды неизменяемы и содержат инструкции, которые инкапсулируют одно действие, которое выполняется на требовать. У вас также может быть RuntimeCommand, которая принимает инструкции при выполнении, но это больше углубляется в шаблоны стратегии или декоратора в зависимости от реализаций.

На мой взгляд, очень важно учитывать неизменный контекст команды, иначе команда станет предложением. Например:

public final class StopServerCommand implements Command {
    private final Server server;

    public StopServerCommand(Server server) { this.server = server; }

    public void execute() {
        if(server.isRunning()) server.stop();
    }
}

public class Application {
    //...
    public void someMethod() {
        stopButton.addActionListener(new ActionListener() {
            public void actionPerformed(Event e) {
                 stopCommand.execute();
            }
        });
    }
}

Лично мне не нравятся команды. По моему собственному опыту, они хорошо работают только для обратных вызовов фреймворка.

Если это помогает, подумайте о команде в метафорическом смысле; обученный солдат получает команду от своего командира, и по требованию солдат выполняет эту команду.

20
ответ дан 1 December 2019 в 07:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: