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