0

我正在面对我的Java项目中的设计问题。我有一个MainWindow框架和几个控制我们实验室显微镜的面板。每个面板都有一些文本字段,按钮等来执行特定的任务。控制器之间传递数据不应该互相依赖

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

两个例子:

  1. 一个面板开始图像采集一系列需要大约10分钟。那时我想禁用所有其他面板的UI控件,所以用户不能打断这个系列。

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

我的想法而已:

  • Observer模式:有一个观察者类,监听所有面板控制器,用于其可能感兴趣的另一面板的控制器事件。这有一个缺点,即控制器继承被锁定到Observable类。这还没有问题。虽然我不想这么早就做出这个决定......嗯......这个观察员班可能会随着时间的推移而大幅增长。
  • 通知模式:来自iOS背景NSNotifications浮现在我的脑海。但Java中没有这样的东西。

您对这个问题有什么想法?我还没有意识到其他选择吗?我的设计首先是坏的吗?

让我知道你在想什么!在此先感谢

回答

0

您可以使Observable接口,所以不会有继承锁定问题。您也可以看看调解员模式。根据您提供的描述,它符合您的需求。

+0

我该如何使Observable成为一个接口?扩展Observable的类需要继承所有必要的方法来与观察者进行交互。我从来没有听说过Mediator模式,我会看看这个! –

+0

好吧,当然如果你使用抽象类java.util.Observable,你必须使用继承,但是你总是可以用类似的角色编写你自己的接口(一个很好的例子可以在这里找到[http:// javarevisited.blogspot.ru/2011/12/observer-design-pattern-java-example.html))。 – Gyrotank