在我的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模式? –