public interface Subject
{
//调用这个方法登记一个新的观察者对象
public void attach(Obserber obserber);
public void detach(Obserber obserber);
public void notifyObserbers();
}
import java.util.Vector;
import java.util.Enumeration;
public class ConcreteSubject implements Subject
{
private Vector<Obserber> obserbersVector = new java.util.Vector<Obserber>();
public void attach(Obserber obserber){
obserbersVector.addElement(obserber);
}
public void detach(Obserber obserber){
obserbersVector.removeElement(obserber);
}
public void notifyObserbers()
{
Enumeration enumeration = obserbers();
while(enumeration.hasMoreElements()){
((Obserber)enumeration.nextElement()).update();
}
}
public Enumeration obserbers(){
return((Vector)obserbersVector.clone()).elements();
}
public static void main(String[] args){
ConcreteSubject cs = new ConcreteSubject();
cs.attach(new ConcreteObserber());
cs.notifyObserbers();
}
}
public interface Obserber{
void update();
}
public class ConcreteObserber implements Obserber{
public void update(){
System.out.println("I am notified!");
}
}