当object1
上发生某些状态更改时,我需要在object2
上执行一些任务。
我试图在android中使用observable模式,我的意思是使用Observer和Observable类,因此object1
实现了Observer,object2
扩展了Observable。不幸的是,object2
已经从另一个类扩展,因此我无法将其定义为Observable的扩展。
还有另一种方法可以使用这种模式吗?也许其他类允许我执行此行为?
感谢。
答案 0 :(得分:8)
只需向object2
添加一个类型为Observable
的字段,添加观察者的字段以及在更改内容时调用notifyObservers()
的字段。
这就是“赞成合成而非继承”的意思。
答案 1 :(得分:6)
扩展内置的Observable类是实现观察者模式的一个相当糟糕的选择,因为它会破坏你的类层次结构,但你已经知道了。
更好的方法是定义自己的Observable
接口,让您的类实现它。您还需要一个用于侦听器类的Listener
接口
Observable
界面中您需要的方法是addListener(Listener listener)
和removeListener(Listener listener)