Model view controller 组件之间的通信(软件设计问题)

Model view controller 组件之间的通信(软件设计问题),model-view-controller,software-design,Model View Controller,Software Design,我有一个具有以下UI组件的应用程序: 主菜单 文件夹树 查询生成器 选项卡式列表每个选项卡都有一个可以显示数据实体的网格 该应用程序基于MVC,因此上面列出的每个组件都有一个控制器和一个视图 前三个组件需要将列表上的数据实体显示为新选项卡: 双击文件夹将在新列表中显示文件夹的项目。 单击查询生成器中的搜索按钮时,将在新选项卡中打开搜索结果。 单击“打开”时。。。菜单项,然后选择一个文件,它将打开一个包含文件中项目的新选项卡。 因为可能有很多项,所以从数据库加载它们的过程是由网格异步完成的。当您查

我有一个具有以下UI组件的应用程序:

主菜单 文件夹树 查询生成器 选项卡式列表每个选项卡都有一个可以显示数据实体的网格 该应用程序基于MVC,因此上面列出的每个组件都有一个控制器和一个视图

前三个组件需要将列表上的数据实体显示为新选项卡:

双击文件夹将在新列表中显示文件夹的项目。 单击查询生成器中的搜索按钮时,将在新选项卡中打开搜索结果。 单击“打开”时。。。菜单项,然后选择一个文件,它将打开一个包含文件中项目的新选项卡。 因为可能有很多项,所以从数据库加载它们的过程是由网格异步完成的。当您查看网格时,网格正在填充

我的问题是:以下哪项是更干净的设计?如果您有更好的解决方案,我将不胜感激

我拥有的第一个解决方案是使用,定义ShowQuery事件,让lists控制器订阅它,其他控制器在想要显示查询结果时将发布它


另一个解决方案类似于Unity容器,从其他控制器解析IListController接口,并调用ShowQuery方法。

这是一个关于Microsoft MVC.NET framework的问题,而不是一个与MVC模式相关的一般软件设计问题。如果您指的是Microsoft ASP.NET MVC,那么这与此无关。如果您指的是复合应用程序指南,那么也不是,我使用的是我自己的MVC框架实现,适合我的需要。我正在使用CAG框架中的概念和想法。另外,这个问题只针对.NET,我在javascript和python.Oops中有一个类似的框架,我想说的是,这个问题不仅仅针对.NET