Это немного похоже на сравнение яблок с апельсинами. Концептуально команда - это шаблон проектирования, но контроллер является частью шаблона мета-проектирования. Это означает, что они не являются взаимоисключающими или включающими. Контроллер может состоять из команды (или даже набора команд).
Существует множество разновидностей MVC, и во многих из них контроллер имеет несколько иные обязанности, но в целом контроллер строго используется для перевода пользовательского ввода в данные приложения (модель). В большинстве разновидностей MVC он также отвечает за обновление представления при изменении модели.
Вообще контроллеры долгоживущие. Они существуют, пока существует определенная модель и / или представление, или даже переживают их, если у них есть система регистрации представления / модели.
С другой стороны, команда теоретически не имеет состояния, она делает свое дело и затем освобождается для сбора мусора. В действительности команды могут жить немного дольше, чем время выполнения их метода execute, это облегчает асинхронные операции. Но команды ВСЕГДА должны быть строго сосредоточены только на одной и только одной задаче, а когда она закончится, они должны исчезнуть.