Этот шаблон может быть действительным, если вам нужно, чтобы муфта была очень слабой. Например, у вас может быть интерфейс
interface CommandProcessor{
void process(Command c);
}
Если у вас есть метод для каждой команды, то каждый раз, когда вы добавляете новую команду, вам нужно будет добавлять новый метод, если у вас есть несколько реализаций, вам нужно будет добавить метод к каждому процессору. Это может быть решено наличием некоторого базового класса, но если потребности расходятся, вы можете получить очень глубокую иерархию классов, когда добавляете новые уровни абстракции (или, возможно, вы уже расширяете другой класс процессором. Если он основан на при переключении на константу вы можете использовать регистр по умолчанию, который по умолчанию обрабатывает новые регистры (исключения, что может быть уместно).
Я использовал шаблон, подобный этому, в моем коде с добавлением фабрики. Операции начинались как небольшой набор, но я знал, что они будут увеличиваться, поэтому у меня был механизм для описания команды, а затем фабрика, которая производила CommandProcessors. Фабрика сгенерирует соответствующий процессор, а затем единственный метод этого процессора примет команду и выполнит ее обработку.
Тем не менее, если ваш список команд довольно статичен, и вам не нужно беспокоиться о том, насколько тесно они связаны, то подход «один метод на команду», безусловно, дает гораздо более читаемый код.