public class ObserverPattern {
public static void main(String[] args) {
Subject subject = new ConcreteSubjectA();
Observer observerA = new ConcreteObserverA(subject);
Observer observerB = new ConcreteObserverB(subject);
subject.notifyObservers();
}
}
interface Observer {
void update();
}
class ConcreteObserverA implements Observer {
private Subject subject;
public ConcreteObserverA(Subject subject) {
this.subject = subject;
this.subject.registerObserver(this);
}
@Override
public void update() {
System.out.println("ConcreteObserverA");
}
}
class ConcreteObserverB implements Observer {
private Subject subject;
public ConcreteObserverB(Subject subject) {
this.subject = subject;
this.subject.registerObserver(this);
}
@Override
public void update() {
System.out.println("ConcreteObserverB");
}
}
interface Subject {
void registerObserver(Observer o);
void removeObserver(Observer o);
void notifyObservers();
}
class ConcreteSubjectA implements Subject {
private List<Observer> observers;
public ConcreteSubjectA() {
observers = new ArrayList<Observer>();
}
@Override
public void registerObserver(Observer o) {
if (o != null) {
observers.add(o);
}
}
@Override
public void removeObserver(Observer o) {
observers.remove(o);
}
@Override
public void notifyObservers() {
for (Observer observer : observers) {
observer.update();
}
}
}
07-13
07-14
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交