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

时间:2009-10-16 07:46:01

标签: model-view-controller software-design

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

  • 主菜单
  • 文件夹树
  • 查询构建器
  • 选项卡式列表(每个选项卡都有一个可以显示数据实体的网格)

该应用程序基于MVC,因此上面列出的每个组件都有一个控制器和一个视图。

前三个组件需要在列表中显示数据实体(作为新选项卡):

  • 双击文件夹将在新列表中显示文件夹的项目。
  • 单击查询构建器中的搜索按钮时,它将在新选项卡中打开搜索结果。
  • 当点击“打开...”菜单项并选择一个文件时,它将打开一个包含文件中项目的新标签。

由于可能存在大量项目,因此从数据库加载它们的过程是由网格异步完成的(网格在您查看时正在填充)。

我的问题是:以下哪一项是“更清洁”的设计? (如果你有更好的解决方案,我将非常感激)

我的第一个解决方案是使用EventAggregator,定义“ShowQuery”事件,让列表控制器订阅它,其他控制器会在想要显示查询结果时发布它。 / p>

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

0 个答案:

没有答案