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



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

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

两个例子:

  1. 一个面板启动一个图像采集系列,大约需要10分钟。当时我想禁用所有其他面板的UI控件,这样用户就不能中断这个系列。

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

到目前为止我的想法:

  • 观察者模式:具有一个观察者类,该类在所有面板控制器上侦听可能引起另一个面板控制器兴趣的事件。这样做的缺点是,控制器继承被锁定到Observable类。这(还)不是问题。不过我真的不想这么早就做出这个决定。。。嗯……随着时间的推移,这个观察者阶层可能会大幅度增长
  • 通知模式:来自iOS背景的NSNotifications出现在我的脑海中。但在Java中却没有这样的东西

你对那个问题有什么想法?还有其他我不知道的选择吗?我的设计一开始就不好吗?

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

您可以将Observable作为一个接口,这样就不会有继承锁定问题。您还可以查看Mediator模式。根据您提供的描述,它符合您的需求。

最新更新