BartRunnerAndroid/src/com/dougkeen/util/Observable.java

47 lines
881 B
Java
Raw Normal View History

2012-09-19 21:12:18 +00:00
package com.dougkeen.util;
import java.util.WeakHashMap;
import org.apache.commons.lang3.ObjectUtils;
public class Observable<T> {
private T value;
private WeakHashMap<Observer<T>, Boolean> listeners = new WeakHashMap<Observer<T>, Boolean>();
public Observable() {
super();
}
public Observable(T value) {
super();
this.value = value;
}
public T getValue() {
return value;
}
public void setValue(T value) {
if (!ObjectUtils.equals(this.value, value)) {
this.value = value;
notifyOfChange(value);
}
}
public void registerObserver(Observer<T> observer) {
listeners.put(observer, true);
}
public void unregisterObserver(Observer<T> observer) {
listeners.remove(observer);
}
protected void notifyOfChange(T value) {
for (Observer<T> listener : listeners.keySet()) {
if (listener != null) {
listener.onUpdate(value);
}
}
}
}