Может любой объяснять с простым примером Шаблона "команда". Я отношусь в Интернете, но я запутался.
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();
}
});
}
}
Лично мне не нравятся команды. По моему собственному опыту, они хорошо работают только для обратных вызовов фреймворка.
Если это помогает, подумайте о команде в метафорическом смысле; обученный солдат получает команду от своего командира, и по требованию солдат выполняет эту команду.