List<Foo> bar = new ArrayList<Foo>();
ArrayList<Foo> baz = new ArrayList<Foo>();
package observer;
public class Test {
public static void main(String[] args) {
Model m = new Model();
m.setValue("Bier");
m.addObserver(new ViewA());
m.setValue("Schnapps");
m.addObserver(new ViewB());
m.setValue("Wein");
m.setValue("aus");
}
}
package observer;
import java.util.ArrayList;
public class Model {
private String value;
private ArrayList<ModelObserver> observers;
public Model(){
observers = new ArrayList<ModelObserver>();
}
public void addObserver(ModelObserver o){
observers.add(o);
}
public void informObservers(){
for(ModelObserver o: observers)
o.valueChanged(getValue());
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
informObservers();
}
}
package observer;
public class ViewA implements ModelObserver{
@Override
public void valueChanged(String value) {
System.out.println("ich bin eine ViewA Model ist jetzt: "+value);
}
}
package observer;
public class ViewB implements ModelObserver {
@Override
public void valueChanged(String value) {
System.out.println("ich bin eine ViewB Model ist jetzt: "+value);
}
}