Межконтроллерная связь в MVC / MVP

Что является хорошим методом для слабосвязанной межконтроллерной связи в MVC / MVP?

Например, в цитате пользователь должен создать и добавить новый контакт или добавить существующий.

Они хотят создать новый контакт. По завершении контакт добавляется в цитату, и пользовательский интерфейс возвращает пользователя к этой цитате. Если они нажмут «Отмена», они вернутся к цитате.

Я хочу повторно использовать контакт в другом месте, поэтому он не должен ничего знать о Quote. Например, если я создаю контакт из списка контактов, он должен вернуться туда по завершении.

Вот некоторые варианты, о которых я подумал:

  • Действие ContactsController вызывает ApplicationController.getNextStep (this), а ApplicationController вычисляет его следующий шаг от имени ContactsController

  • ContactsController вызывает событие «actioncomplete» или подобное , и ApplicationController прослушивает это событие и вызывает правильный следующий шаг

  • QuoteController передает «эстафету» ContactsController со следующим шагом, который ContactsController вызывает по завершении

  • ContactsController вызывает событие «actioncomplete» или подобное, и QuotesController отслеживает это событие и вызывает правильный следующий шаг.

Есть ли у вас в этом опыт? Другие идеи? Что вызовет меньше всего головной боли в большом приложении?

Спасибо!

5
задан Neil McGuigan 18 February 2012 в 22:21
поделиться