观察者模式:
就是一个对象的状态发生了变化,依赖于这个对象的会全部收到状态变化的通知。
特点:
1:创建一个事件通知对象
2:去创建一个可以实现观察者的接口
场景:
一个事件发生后,要执行一连串更新操作这种功能可以采用观察者模式。
代码:
abstract class EventBase{
private $object;
//把对象注册到成员变量中
public function add($object)
{
$this->object[] = $object;
}
//事件通知
public function notify($even_info)
{
//遍历并调用观察者类中的update方法
foreach ($this->objectas $k => $object){
$object->update($even_info);
}
}
}
//观察者接口
interface ServerInterFace
{
public function update($even_info=null);
}
//观察者类
class Server implements ServerInterFace
{
public function update($even_info=null)
{
echo $even_info;
}
}
//观察者类
class Server2 implements ServerInterFace
{
public function update($even_info=null)
{
echo $even_info;
}
}
class LoginEvent extends EventBase{
/**
* 具体事件逻辑
**/
}
//登录事件
$loginEvent = new LoginEvent();
//为登录事件添加观察者
$loginEvent->add(new Server);
$loginEvent->add(new Server2);
$loginEvent->notify('测试相关信息');