可观察模式的替代方案?

for*_*cio 6 java android design-patterns

我需要在object1发生某些状态变化时执行一些任务object2.我试图在android中使用observable模式,我的意思是使用Observer和Observable类,因此object1实现Observer并object2扩展Observable.不幸的是,object2已经从另一个类扩展,所以我不能将它定义为Observable的扩展.

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

谢谢.

Mic*_*rdt 8

只需添加到添加object2Observable观察者的类型字段,并在notifyObservers()某些内容发生变化时调用.

这就是"赞成合成而非继承"的含义.


kos*_*tja 6

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

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

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