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(); } }