Java tutorial
import java.util.Observable; import java.util.Observer; class ObservedObject extends Observable { private String watchedValue; public ObservedObject(String value) { watchedValue = value; } public void setValue(String value) { if (!watchedValue.equals(value)) { System.out.println("Value changed to new value: " + value); watchedValue = value; setChanged(); notifyObservers(value); } } } class MainObserver implements Observer { public void update(Observable obj, Object arg) { System.out.println("Update called with Arguments: " + arg); } } public class Main { public static void main(String[] args) { ObservedObject watched = new ObservedObject("Original Value"); MainObserver watcher = new MainObserver(); watched.setValue("New Value"); watched.addObserver(watcher); watched.setValue("Latest Value"); } }