Что является хорошим методом для слабосвязанной межконтроллерной связи в MVC / MVP?
Например, в цитате пользователь должен создать и добавить новый контакт или добавить существующий.
Они хотят создать новый контакт. По завершении контакт добавляется в цитату, и пользовательский интерфейс возвращает пользователя к этой цитате. Если они нажмут «Отмена», они вернутся к цитате.
Я хочу повторно использовать контакт в другом месте, поэтому он не должен ничего знать о Quote. Например, если я создаю контакт из списка контактов, он должен вернуться туда по завершении.
Вот некоторые варианты, о которых я подумал:
Действие ContactsController вызывает ApplicationController.getNextStep (this), а ApplicationController вычисляет его следующий шаг от имени ContactsController
ContactsController вызывает событие «actioncomplete» или подобное , и ApplicationController прослушивает это событие и вызывает правильный следующий шаг
QuoteController передает «эстафету» ContactsController со следующим шагом, который ContactsController вызывает по завершении
ContactsController вызывает событие «actioncomplete» или подобное, и QuotesController отслеживает это событие и вызывает правильный следующий шаг.
Есть ли у вас в этом опыт? Другие идеи? Что вызовет меньше всего головной боли в большом приложении?
Спасибо!