赞
踩
也称发布订阅模式(Publish/Subscribe),定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
public interface Observer {
/**
* 更新状态
*/
void updateState();
}
public class ConcreteObserver01 implements Observer { private String observerName; private Subject subject; public ConcreteObserver01(String observerName, Subject subject) { this.observerName = observerName; this.subject = subject; } @Override public void updateState() { System.out.println(subject.getAction() + "," + observerName + "进入工作状态"); } }
public class ConcreteObserver02 implements Observer { private String observerName; private Subject subject; public ConcreteObserver02(String observerName, Subject subject) { this.observerName = observerName; this.subject = subject; } @Override public void updateState() { System.out.println(subject.getAction() + "," + observerName + "进入工作状态"); } }
public class Subject { private List<Observer> observerList = new ArrayList<>(); private String action; public String getAction() { return action; } public void setAction(String action) { this.action = action; } public void addObserver(Observer observer) { observerList.add(observer); } public void delObserver(Observer observer) { observerList.remove(observer); } public void notifyObserver() { for (Observer observer : observerList) { observer.updateState(); } } }
public class BossSubject extends Subject {
}
public class Main {
public static void main(String[] args) {
Subject bossSubject = new BossSubject();
Observer concreteObserver01 = new ConcreteObserver01("01员工摸鱼", bossSubject);
Observer concreteObserver02 = new ConcreteObserver02("02员工摸鱼", bossSubject);
bossSubject.addObserver(concreteObserver01);
bossSubject.addObserver(concreteObserver02);
bossSubject.setAction("老板开始巡视");
bossSubject.notifyObserver();
}
}
优点:
缺点
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。