我试图解决在解释update()调用的observable时要涉及的丑陋的条件转换,该observable将要通知其观察者多种类型的事件。另外,我宁愿不将标志传递给notifyObservers()/ update()方法。一个可观察事件的多个可观察事件
我不想让观察员有轮询观察的对象,找出有什么变化,我想这个新的数据通过update()方法被赋予观察员(或类似)。
我有一个解决方案的想法。我为每种类型的通知创建一个可观察对象。例如:可观察到的是代表一个硬件设备的对象,它将包含代表其状态观测:
public final Observable connectionState = new Observable();
public final Observable dataState = new Observable();
这样,观察员并不需要做任何形式的查询或有条件的铸造,作为一个观察者,即每个通知类型都可以使用一个重写的update()方法。
太多的无奈后,这是最完美的解决方案,我能想到的,但我有我已经错过了关于如何正确使用观察员/观测量点这个可怕的感觉。
我与解决方案的主要问题是:
- 它仍然涉及铸造(至少是没有条件)
- 由于观测需要可观察到,它们必须是public成员。虽然这允许观察者调用addObservable(),但它也允许它们调用notifyObservers()。
我做对了吗?
谢谢