在MVC / MVP中,松散耦合的控制器间通信的一种好方法是什么?

例如,在报价中,用户必须创建并添加新联系人,或添加现有联系人。

他们选择创建一个新的联系人。完成后,将联系人添加到报价中,并且UI将用户返回到该报价中。如果单击取消,它们将返回报价。

我想在其他地方重复使用“联系人”,因此对“报价”一无所知。例如,如果我从联系人列表创建联系人,则完成后它应该返回该列表。

这是我想到的一些选项:


ContactsController动作调用ApplicationController.getNextStep(this),ApplicationController代表ContactsController找出下一步
ContactsController引发“ actioncomplete”事件或类似事件,并且ApplicationController正在侦听此事件,并调用正确的下一步
QuoteController下一步将“警棍”传递给ContactsController,完成后由ContactsController调用
ContactsController引发“ actioncomplete”事件或类似事件,并且QuotesController正在侦听此事件,并调用正确的下一步。


你有这些经验吗?还有其他想法吗?在大型应用程序中,哪件事会引起最少的头痛?

谢谢!

最佳答案

您可以实现某种形式的导航堆栈,首先将Quote或Contacts控制器推入其中,然后在需要时将Contact控制器推入其中。当Contact控制器完成后,它会自动弹出并在下一个达到峰值时知道要去哪里。这样,它就完全解耦了,可以在任何地方重复使用,并且可以嵌套在n级深处。

08-04 05:43