
1、Subject.java
package com.ssm.cts.pattern.observer;
import java.util.Vector;
public abstract class Subject {
// 定义一个观察者数组
private Vector<Observer> obsVector = new Vector<Observer>();
// 增加一个观察者
public void addObserver(Observer o) {
this.obsVector.add(o);
}
// 删除一个观察者
public void delObserver(Observer o) {
this.obsVector.remove(o);
}
// 通知所有观察者
public void notifyObserver() {
for (Observer o : this.obsVector) {
o.update();
}
}
}
2、ConcreteSubject.java
package com.ssm.cts.pattern.observer;
public class ConcreteSubject extends Subject {
public void doAction() {
System.out.println("被观察者开始行动");
super.notifyObserver();
}
}
3、Observer.java
package com.ssm.cts.pattern.observer;
public interface Observer {
// 更新方法
public void update();
}
4、ConcreteObserver.java
package com.ssm.cts.pattern.observer;
public class ConcreteObserver implements Observer {
@Override
public void update() {
System.out.println("观察者接收到信息,并进行处理!");
}
}
5、Demo.java
package com.ssm.cts.pattern.observer;
public class Demo {
public static void main(String[] args) {
// 创建一个被观察者
ConcreteSubject subject = new ConcreteSubject();
// 定义一个观察者
Observer obs = new ConcreteObserver();
// 观察者 观察 被观察者
subject.addObserver(obs);
// 被观察者开始行动
subject.doAction();
}
}