假設我有一個包想要向所有聽衆廣播一個信息。考慮到我使用其中MyComponent
被消耗0..N ComponentListeners
聲明式服務,我想有這樣的事情:在0..n基數中綁定OSGi服務的好習慣?
public class MyComponent {
private List<ComponentListener> listeners;
private String data;
public MyComponent() {
listeners = new ArrayList<>();
}
// Someone else will call this
public void updateData(String newData) {
data = newData;
notifyAll(data);
}
// Broadcasts the data to all listeners
private void notifyAll(String data) {
for (ComponentListener listener : listeners) {
listener.updateData(data);
}
}
// Declarative Service binding methods
public void bindComponentListener(ComponentListener cl) {
listeners.add(cl);
}
public void unbindComponentListener(ComponentListener cl) {
listeners.remove(cl);
}
}
我的問題是:
- 是在0到n基數推薦的?我發現的唯一例子是從Apache Felix tutorial,這是類似於上面的。
- 觀察者/可觀察方法在OSGi中是否被認爲是一種良好的習慣?
- 如果我想通知所有聽衆,我應該在每個聽衆的不同線程中調用
listener.updateData(data);
,對吧?這樣,我確保所有聽衆都會同時收到通知。
我完全忘記了事件管理員,但在嘗試此操作之前,我會先閱讀完整的論文。謝謝! – 2014-09-04 20:48:04