可选择的可观察模式?
问题描述:
当object2
发生某些状态更改时,我需要在object1
上执行一些任务。 我试图在android中使用可观察模式,我的意思是使用Observer和Observable类,所以object1
实现了Observer和object2
扩展了Observable。不幸的是,object2
已经从另一个类扩展,所以我不能将它定义为Observable的扩展。可选择的可观察模式?
是否有另一种使用这种模式的替代方案?也许其他类允许我执行此行为?
谢谢。
答
只需添加到object2
场Observable
型的方法,其观察员和上notifyObservers()
在某些事情发生变化时被调用
这就是“支持继承”的意思。
答
扩展内置的Observable类实现观察者模式是一个相当糟糕的选择,因为它破坏了你的类层次结构,但你已经知道了。
更好的方法是定义自己的Observable
接口并让你的类实现它。您还需要一个Listener
接口,用于监听类添加
你需要在你的Observable
接口被addListener(Listener listener)
和removeListener(Listener listener)
谢谢!对我而言足够了。 kostja的解决方案听起来不错,但需要额外的努力。 – forumercio
这是一个“危险的”解决方案。虽然它也适用于我。但是,另外你应该提到,要将你的课程或者至少将所有相关属性声明为私有。当你的课程被另一个课程扩展时,这是保持你的可观察工作的唯一方法... – Sauer