您的位置:首页 > 其它

观察者模式-订报纸,语音呼叫系统实例

2015-12-18 14:26 155 查看
<?php
/**
* 观察者模式
*/

/**
* 专门负责观察的类--主呼叫系统
* 1、记录要提醒的对象的名字
* 2、循环调用记录的对象们的一个同名的方法,这个方法具体做什么事情它们自己去决定
*/
class Paper
{
private $_observers = array();
public function register($sub)/*录入要提醒的人的名单*/
{
$this->_observers[] = $sub;
}
public function trigger()/*统一提醒功能*/
{
if(!empty($this->_observers))
{
foreach($this->_observers as $observer)
{
$observer->update();//记录的对象们的一个同名的方法,‘同名’用接口来规范
}
}
}
}

/**
* 观察者们,必须要实现的接口
*/
interface Observerable
{
public function update();
}

class Subscriber1 implements Observerable
{
public function update()
{
echo '我是1号,主呼叫系统在call我,我该做点什么事情了^_^\n';
}
}

class Subscriber2 implements Observerable
{
public function update()
{
echo '我是2号,主呼叫系统在call我,我该做点什么事情了^_^\n';
}
}

class Subscriber3 implements Observerable
{
public function update()
{
echo '我是3号,主呼叫系统在call我,我该做点什么事情了^_^\n';
}
}

/*测试*/
$paper = new Paper();//呼叫系统
$paper->register(new Subscriber1());//注册观察者
$paper->register(new Subscriber2());
$paper->register(new Subscriber3());
$paper->trigger();//呼叫系统通知各个观察者,这个动作可以由外界的某件事情来触发,比如到了推送报纸的时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: