可观察模式的替代方案?

时间:2011-12-01 15:54:51

标签: java android design-patterns

object1上发生某些状态更改时,我需要在object2上执行一些任务。 我试图在android中使用observable模式,我的意思是使用Observer和Observable类,因此object1实现了Observer,object2扩展了Observable。不幸的是,object2已经从另一个类扩展,因此我无法将其定义为Observable的扩展。

还有另一种方法可以使用这种模式吗?也许其他类允许我执行此行为?

感谢。

2 个答案:

答案 0 :(得分:8)

只需向object2添加一个类型为Observable的字段,添加观察者的字段以及在更改内容时调用notifyObservers()的字段。

这就是“赞成合成而非继承”的意思。

答案 1 :(得分:6)

扩展内置的Observable类是实现观察者模式的一个相当糟糕的选择,因为它会破坏你的类层次结构,但你已经知道了。

更好的方法是定义自己的Observable接口,让您的类实现它。您还需要一个用于侦听器类的Listener接口

Observable界面中您需要的方法是addListener(Listener listener)removeListener(Listener listener)