观察者模式
1.观察者模式可以打个简单比方如:
大家看报纸,定了商报。商报是subject而订阅者是observer,当商报有新的消息的时候就出版报纸给订阅者来让他们获取消息。
也就是:定义一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
2.UML图

3.代码说明:
Subject(主题接口):
1 public interface Subject {
2 // 添加观察者
3 public void attach(Observer observer);
4
5 // 移除观察擦着
6 public void detach(Observer observer);
7
8 void notifyObservers();
9 }
Observer(观察者接口):
1 public interface Observer {
2
3 void update();
4
5 }
ConcreteObserver1(观察者实例1)
1 public class ConcreteObserver1 implements Observer {
2
3 @Override
4 public void update() {
5 System.out.println("1111111111111111");
6 }
7
8 }
ConcreteObserver2(观察者实例2)
1 public class ConcreteObserver2 implements Observer {
2
3 @Override
4 public void update() {
5 System.out.println("222222222222222");
6 }
7
8 }
ConcreteSubject:
1 public class ConcreteSubject implements Subject {
2 //装要获取消息的观察者
3 private List<Observer> list = new ArrayList<Observer>();
4
5 @Override
6 public void attach(Observer observer) {
7
8 list.add(observer);
9 }
10
11 @Override
12 public void detach(Observer observer) {
13 list.remove(observer);
14 }
15
16 @Override
17 public void notifyObservers() {
18 for (int i = 0; i < list.size(); i++) {
19 list.get(i).update();
20 }
21
22 }
23
24 }
运行代码:
1 ConcreteSubject concreteSubject = new ConcreteSubject(); 2 concreteSubject.attach(new ConcreteObserver1()); 3 concreteSubject.attach(new ConcreteObserver2()); 4 concreteSubject.notifyObservers();
运行后的结果是:
来源:https://www.cnblogs.com/liangstudyhome/p/4031152.html