在我的Android项目中,我有一个单例类,每秒从外部源检索数据。当检索数据时,它应该通知某些数据显示对象有新的数据可用,以便他们可以自行更新。听众是一个很好的解决方案,它们是如何实现的?
我相信实现这个最好的方法是让数据显示器实现一些监听接口,然后向数据检索器单例注册。
这是一个很好的解决方案吗?这个问题通常如何解决?是否有任何现成的类/框架可供我使用?
在我的Android项目中,我有一个单例类,每秒从外部源检索数据。当检索数据时,它应该通知某些数据显示对象有新的数据可用,以便他们可以自行更新。听众是一个很好的解决方案,它们是如何实现的?
我相信实现这个最好的方法是让数据显示器实现一些监听接口,然后向数据检索器单例注册。
这是一个很好的解决方案吗?这个问题通常如何解决?是否有任何现成的类/框架可供我使用?
一种解决方案是通过Observer
接口和Observable
类实现observer pattern类。例如:
import java.util.Observable;
public class DataModel extends Observable
{
public void retrieveData()
{
// ...
setChanged();
notifyObservers(); // or notifyObservers(someData);
}
}
import java.util.Observer;
public class ViewClass implements Observer
{
@Override
public void update(Observable observable, Object data)
{
// update the view
}
}
您需要注册这样的观察员
DataModel dm = ...;
dm.addObserver(viewClass1);
dm.addObserver(viewClass2);
dm.addObserver(viewClass3);
你应该适当地不使用这个类,因为它们有许多缺点。 '''Observable'''是一个类,因为在java中没有多重继承,所以这可能是不可行的。只需要自己实现Observable和Observer! –
你需要的是一个回调。如果新数据可用,则会自动通知实现回调的其他类。
这是一个很好的描述Callbacks。
对于观察者模式,看起来像是一个经典用例。 http://en.wikipedia.org/wiki/Observer_pattern
Observer模式? –