在不应相互依赖的控制器之间传递数据

时间:2017-02-10 12:50:17

标签: java design-patterns model-view-controller observer-pattern

我在Java项目中遇到了设计问题。我有一个MainWindow框架,有几个面板可以控制我们实验室的显微镜。这些面板中的每一个都有一些文本字段,按钮等...来执行特定的任务。

我按照MVC模式设计了我的程序。每个面板都有自己的控制器。现在我面临的设计问题是如何在这些控制器之间传递数据而不使它们相互依赖。

两个例子:

  1. 一个面板启动图像采集系列,大约需要10分钟。我想在那段时间禁用所有其他面板的UI控件,因此用户无法中断此系列。

  2. 本系列完成后,我想在另一个面板中显示有关此次采集的一些元数据(预填充某些字段)。

  3. 到目前为止我的想法:

    • 观察者模式:拥有一个观察者类,它在所有面板控制器上侦听可能对另一个面板的控制器感兴趣的事件。这样做的缺点是控制器继承被锁定到Observable类。这还不是问题。我真的不想这么早做出这个决定......嗯......这个观察者的课程可能会随着时间的推移而大大增加。
    • 通知模式:来自iOS背景NSNotifications来到我的脑海。但是在Java中没有这样的东西。

    您对这个问题有什么看法?还有其他我不知道的选择吗?我的设计首先是不好的吗?

    让我知道你的想法!提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使Observable成为一个接口,因此不存在继承锁定问题。您还可以查看 Mediator 模式。根据您提供的说明,它符合您的需求。