import java.util.ArrayList;
abstract class Subject{
private ArrayList<ConcreteObserver> observers = new ArrayList<ConcreteObserver>();
public void Attach(ConcreteObserver concreteObserver) {
observers.add(concreteObserver);
}
public void Detach(Observer observer) {
observers.remove(observer);
}
public void Notify() {
for(ConcreteObserver o:observers) {
System.out.println("观察者的新状态是"+o.Update());
}
}
}
class ConcreteSubject extends Subject{
private String subjectState;
public String getSubjectState() {
return subjectState;
}
public void setSubjectState(String subjectState) {
this.subjectState = subjectState;
}
}
interface Observer{
public abstract String Update();
}
class ConcreteObserver implements Observer{
private String name;
private String observerState;
private ConcreteSubject subject;
public ConcreteObserver(String name, ConcreteSubject subject) {
super();
this.name = name;
this.subject = subject;
}
public String Update() {
observerState = subject.getSubjectState();
return this.name=observerState;
}
}
public class Main {
public static void main(String args[])
{
ConcreteSubject cs = new ConcreteSubject();
cs.Attach(new ConcreteObserver("X",cs));
cs.Attach(new ConcreteObserver("Y",cs));
cs.Attach(new ConcreteObserver("Z",cs));
cs.setSubjectState("ABC");
cs.Notify();
}
}
观察者模式2
最新推荐文章于 2024-08-20 00:23:27 发布