Java:可以通过观察者层次结构向观察者通知更改吗?

标签 java observer-pattern runnable observable

所以我有一些类只是观察者,另一个类既是观察者又是可观察的,第三个类只是可观察的。

我希望能够获取两者兼而有之的类,并通知一些观察者仅可观察的类已更改。因此,Observer 和 Observable 类实际上不会改变自身,而是在只有 Observable 发生变化时通知观察者(从而让观察者运行其更新方法)。

这可以做吗?是否必须更改 Observable 才能通知观察者?我该怎么办呢?

编辑:我发现我的设计存在问题:

当update方法接受一个Observable o时,我不确定这个o是ObserverObservable还是ObservableOnly的实例,所以问题就出现了。我必须为两者设定条件,并创建一个 ObservableOnly 实例或一个从 Observable 获取信息的类/方法,仅作为 Observer 中的一个字段。

最佳答案

如前所述,这绝对是可能的。

我花了一些时间编写了一些简单的代码,其中我对观察者和可观察者都使用了 java 接口(interface)。 (我想值得一提的是,我使用的是观察者的轮询版本,而不是推送。)

http://pastebin.com/M2CY82wd

该代码并不完美,但希望它向您展示它的样子。

此外,这是我和其他许多人推荐的一本书: http://shop.oreilly.com/product/9780596007126.do

关于Java:可以通过观察者层次结构向观察者通知更改吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29067332/

相关文章:

java - 观察者/可观察模式

android - Android 中的锁屏可加快游戏速度

java - 使用 java.util.concurrent API 结束线程

java - Spring Bean在配置类中初始化后仍然为null

java.net.socket 实现

java - 如何让多个线程在有限的池中永不停止运行

java - 为什么没有收到正确的数据?

c# - 处理多个 DropDown 选择的更好方法

java - 基本 Java 线程和可运行模式

java - 用户 'root' @'localhost' Spring Boot MySql 访问被拒绝