
public class Client {
public static void main(String[] args) {
Subject subject = new ConcreteSubject();
Observer observer1 = new ConcreteObserver1();
Observer observer2 = new ConcreteObserver2();
subject.add(observer1);
subject.add(observer2);
subject.notifyObserver();
}
}
import java.util.ArrayList;
import java.util.List;
public abstract class Subject {
protected List<Observer> observers = new ArrayList<Observer>();
public void add(Observer observer) {
observers.add(observer);
}
public void remove(Observer observer) {
observers.remove(observer);
}
public abstract void notifyObserver();
}
public interface Observer {
void response();
}
public class ConcreteSubject extends Subject {
@Override
public void notifyObserver() {
System.out.println("具体目标发生改变");
for (Object object : observers) {
((Observer) object).response();
}
}
}
public class ConcreteObserver1 implements Observer {
@Override
public void response() {
System.out.println("具体观察者1作出反应!");
}
}
public class ConcreteObserver2 implements Observer {
@Override
public void response() {
System.out.println("具体观察者2作出反应!");
}
}