import java.util.ArrayList;
import java.util.List;
public abstract class Subject被观察者 {
public List<Observer> list = new ArrayList<Observer>();
/**添加观察者 */
public void addObserver(Observer observer) {
this.list.add(observer);
}
/** 删除观察者*/
public void deleteObserver(Observer observer) {
this.list.remove(observer);
}
/** 通知观察者 */
public void notifyAllObserver() {
for(final Observer obs : list) {
obs.doSomething();
}
}
public abstract void doSomething();
}
观察者接口
public interface Observer {
void doSomething();
}
被观察者实现类
public class Leader extends Subject被观察者 {
@Override
public void doSomething() {
System.out.println("领导已经到达公司门口,请各部门做好相关准备!");
this.notifyAllObserver();
}
}
当被观察者发生行为变化的时候,就要通知各个观察者
第一个观察者:保安室观察者
public class 保安室观察者 implements Observer{
@Override
public void doSomething() {
System.out.println("我们是保安室,刚收的通知说领导已经到了,请把车库车位挪一下");
}
}
第二个观察者:部门观察者
public class 部门观察者 implements Observer{
@Override
public void doSomething() {
System.out.println("我们是部门观察者,刚收的通知说领导已经到了,请各位做好相关任务工作");
}
}
运行如下代码
public static void main(String[] args) {
Subject被观察者 subject被观察者 = new Leader();
subject被观察者.addObserver(new 保安室观察者());
subject被观察者.addObserver(new 部门观察者());
subject被观察者.doSomething();
}