В чем разница между контроллерами в шаблоне MVC и командами в шаблоне команд? - PullRequest
0 голосов
/ 02 апреля 2012

Иногда я думаю, что Controller и Command - это одно и то же, потому что они оба инкапсулируют бизнес-логику.Единственное различие, о котором я могу думать, состоит в том, что команда должна иметь метод execute () без параметров, но метод execute () контроллера может принимать параметры.Или я не прав?

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

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

С другой стороны, команда теоретически не имеет состояния, она делает свое дело и затем освобождается для сбора мусора. В действительности команды могут жить немного дольше, чем время выполнения их метода execute, это облегчает асинхронные операции. Но команды ВСЕГДА должны быть строго сосредоточены только на одной и только одной задаче, а когда она закончится, они должны исчезнуть.

0 голосов
/ 02 апреля 2012

Разница огромна:

  • в MVC (контроллер вида модели) «контроллер» сообщает «виду», что хранится в «модели», а также сохраняет изменения, сделанные пользователем «вида». Каждое изменение в «модели» уведомляется «вид». Модель может быть XML-файлом, базой данных и т. Д. Типичным примером «представления» является графический интерфейс. ЗДЕСЬ Вы можете прочитать больше о шаблоне MVC.

  • в шаблоне Command объект "command" выполняет действие, не зная вызывающего. ЗДЕСЬ приведен простой пример переключателя. переключатель может включать / выключать лампу, а также двигатель или что-то еще ..

Надеюсь, я ясно дал понять

...