У меня есть этот интерфейс:
public interface Command<T> {
T execute(String... args);
}
он отлично работает для большинства целей. Но когда я пытаюсь моделировать команду, которая имеет только побочные эффекты (например, без возвращаемого значения), я соблазн написать:
public class SideEffectCommand implements Command<Void> {
@Override
public Void execute(String... args) {
return null; // null is fine?
}
}
Это обычная проблема? Существуют ли лучшие методы моделирования Commands
с и без возвращаемого значения?
Я попытался с этим адаптером, но я думаю, что это не оптимально по нескольким причинам:
public abstract class VoidCommand implements Command<Void> {
@Override
public Void execute(String... args) {
execute2(args);
return null;
}
public abstract void execute2(String... args);
}