观察者模式

观察者模式 定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它所有依赖者都会收到通知并自动更新。

subject observer
subject observer

subject observer UMP map

In php

主题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
//被订阅的主题
interface subject {
//注册的观察者
private $observers = [];
/**
* Observer $observer
*
* return void
*/
public function rigisterObserver(Observer $observer){
$this->observers[] = $observer;
}
/**
* Observer $observer
*
* return void
*/
public function removeObserver(Observer $observer){
unset($this->observers[array_search($observer)]);
}
/**
* Notify all observer
*
* return void
*/
public function notifyObservers(){
foreach($this->observers as $observer){
$observer->update();
}
}
}

观察者

1
2
3
4
5
6
7
8
9
<?php
//观察者
interface Observer{
/**
* Do things when notify
*/
abstract public function update();
}