我有一个包含以下 UI 组件的应用程序:
- 主菜单
- 文件夹树
- 查询生成器
- 选项卡式列表(每个选项卡都有一个可以显示数据实体的网格)
该应用程序基于 MVC,因此上面列出的每个组件都有一个控制器和一个视图。
前三个组件需要在列表中显示数据实体(作为新选项卡):
- 双击文件夹将在新列表中显示文件夹的项目。
- 单击查询构建器中的搜索按钮时,它将在新选项卡中打开搜索结果。
- 当单击“打开...”菜单项并选择一个文件时,它将打开一个包含文件中项目的新选项卡。
由于可能有很多项目,从数据库加载它们的过程是由网格异步完成的(当您查看网格时,网格正在被填充)。
我的问题是:以下哪一项是“更清洁”的设计?(如果您有更好的解决方案,我将非常感激)
我的第一个解决方案是使用EventAggregator,定义一个“ShowQuery”事件,让列表控制器订阅它,其他控制器会在他们想要显示查询结果时发布它。
另一种解决方案类似于 Unity Container,从其他控制器解析“IListsController”接口,并调用“ShowQuery”方法。