Skip to content

Instantly share code, notes, and snippets.

@truefedex
Created September 28, 2018 20:43
Show Gist options
  • Save truefedex/b0ee90d715619879a121d3c4823a755e to your computer and use it in GitHub Desktop.
Save truefedex/b0ee90d715619879a121d3c4823a755e to your computer and use it in GitHub Desktop.
Just simple and more convenient replacement of java.util.Observable/Observer to implement observer pattern
package com.example;
import java.util.ArrayList;
import java.util.List;
/**
* Just simple and more convenient replacement of java.util.Observable/Observer
* to implement observer pattern
*/
public class SimpleObservable<T> {
private T value;
private List<Observer<T>> observers = new ArrayList<>();
public interface Observer<T> {
void onChanged(T value);
}
public SimpleObservable() {
}
public SimpleObservable(T value) {
this.value = value;
}
public void subscribe(Observer<T> observer) {
if (!observers.contains(observer)) {
observers.add(observer);
}
}
public void unsubscribe(Observer<T> observer) {
observers.remove(observer);
}
public T get() {
return value;
}
public void set(T value) {
this.value = value;
notifyChanged();
}
public void notifyChanged() {
for (Observer<T> observer: observers) {
observer.onChanged(value);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment