观察者模式
当对象间存在一对多关系时,可以使用观察者模式(Observer Pattern)。
一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,并执行相应方法。
写一个简单的观察者模式
<?php
/**
* 定义观察者需要实现的接口
* Interface SendMsg
*/
interface SendMsg
{
public function send();
}
/*
* 观察者 1
*/
class Client1 implements SendMsg
{
public function send ()
{
echo '观察者 Client1 , 收到通知,执行成功! <br>';
}
}
/*
* 观察者 2
*/
class Client2 implements SendMsg
{
public function send ()
{
echo '观察者 Client2 , 收到通知,执行成功! <br>';
}
}
/**
* 事件
* Class Event
*/
class Event
{
protected $Observer = [];
/**
* 添加观察者
* @param $Observer
*/
public function add($Observer)
{
$this->Observer[] = $Observer;
}
/**
* 消息通知
*/
public function notify()
{
if(isset($this->Observer)){
foreach ($this->Observer as $value)
{
$value->send();
}
}
}
/**
* 执行事件
*/
public function setOrder()
{
echo '订单创建成功! <br>';
$this->notify ();
}
}
$event = new Event();
//添加观察者
$event->add ( new Client1() );
$event->add ( new Client2() );
//执行事件
$event->setOrder ();
结果输出
订单创建成功!
观察者 Client1 , 收到通知,执行成功!
观察者 Client2 , 收到通知,执行成功!