/**
* @Description 消息的消费者
**/
public class AnnaConcreteObserver implements Observer {
@Override
public void update() {
System.out.println("Anna小姐姐发现领导到来,暂停在线摸鱼,回归工作");
}
}
public class BossConcreteSubject extends Subject {
public void doSomething(){
System.out.println("老板完成自己的工作");
//还有其他操作
System.out.println("视察公司工作情况");
super.notifyAllObserver();
}
}
/**
* @Description 消息的消费者
**/
public class LWConcreteObserver implements Observer {
@Override
public void update() {
System.out.println("老王发现领导到来,暂停在线摸鱼,回归工作");
}
}
/**
* @Description 消息发布者
**/
public class Subject {
private List<Observer> observerList = new ArrayList<>();
/**
* 新增观察者
* @param observer
*/
public void addObserver(Observer observer){
this.observerList.add(observer);
}
/**
*删除观察者
* @param observer
*/
public void deleteObserver(Observer observer){
this.observerList.remove(observer);
}
public void notifyAllObserver(){
for(Observer observer:this.observerList){
observer.update();
}
}
}
public class Main {
public static void main(String[] args) {
//创建一个主题,老板
BossConcreteSubject subject = new BossConcreteSubject();
//创建观察者,就是摸鱼的同事
Observer lwObserver = new LWConcreteObserver();
//创建观察者,就是摸鱼的同事
Observer annaObserver = new AnnaConcreteObserver();
//建立对应的关系,老板这个主题被同事进行观察
subject.addObserver(lwObserver);
subject.addObserver(annaObserver);
//主题开始活动,里面会通知观察者(相当于发布消息)
subject.doSomething();
}
}