2011-11-18 61 views
0

我正在做一个聊天应用程序。我的更新问题在于: 我有用于存储Component实例的Core类。设计模式与聊天应用程序

当收到新消息时,Core将调用Component的方法,它将更新屏幕。

当新消息必须发送(在Component窗格中键入)组件如何通知Core?

对我来说(我可能错了),组件将有一个核心实例,以便发送更新到它(同样的事情会发生在观察者模式)。 这可能是一个直接的解决方案,但我现在无法弄清楚。欢迎任何建议。它就像我需要的双向观察者模式。

+1

如果Core和Component都实现内置的Java Observer模式,它会是一个有效的解决方案吗? – Giannis

回答

1

基本上,如果你有一个数据源和一个接收器,并且你想确保它们之间的松散耦合,观察者模式总是很好用。

如果你的Core类直接存储你的组件的一个实例,你不需要在它们之间有一个额外的观察者模式,因为Core类可以直接调用你的组件的方法,对吗?

因此,您需要Core和Component之间发送消息的任何连接/间接关联,并且您应该使用Observer。当您创建实例时,您可以将自己作为观察者传递给组件。

但实际上,我认为它是一个重要的设计问题,在你的架构,你应该使用MVC这类应用:

MVC

在这种情况下,你必须分裂核心的控制器(处理UI交互,即发送/接收消息)和模型(存储消息和元数据,可能是应用程序逻辑)。你的组件将是View类。

+0

基本上这个组件是一个抽象类,它可能会在运行期间被改变,但是当我发布了一个问题,我并不真的需要Observer将消息发送到组件时,我想到了。尽管它需要从组件向核心发送数据?感谢指出这种模式生病检查它。 – Giannis

+0

是的,您可以使用它来将数据从组件发送到核心,并使用松散耦合来避免循环依赖。 MVC以类似Observer的方式解决了这个问题,从View到Controller和Model到View有一个Observer模式(并不总是依赖于你的底层工艺) – philomatic