个人理解,观察者模式,就是当一个动作发生,就会有一个与其相关的程序作出响应。
或者简单的说,把对象A注册到对象B中,当B中的某个方法被调用的时候,这个方法会调用A中的某个方法
应用范例,当你使用微博,有人@你,后台就会因为数据变动,给你发个通知。
还有一些重要软件一般会有一个或多个守护进程,当主进程被强制关闭,守护进程会立即激活主进程
<?php
/*
观察者模式,就是当你在街上看妹子,
看到了苍老师,你是一个观察者,苍老师是一个被观察对象
苍老师看你小伙挺帅,给了你一个kiss,你并为此做出一些反应,
这就是一个观察者模式发生的全过程
*/
//观察者接口
interface Observer{
function daJiao();
}
//被观察者
interface Subject{
function addHeart($obj);
}
//你码了一天的代码,来到街上看妹子
class You implements Observer{
function daJiao(){
echo "Ya mei dei ~";
}
}
//我靠 那不是苍老师!
class CangLaoShi implements Subject{
private $heart = "";
//你的惊呼引起了她的注意,她对你一见钟情,于是你就进入了她婶婶的脑海里
function addHeart($obj){
$this->heart = $obj;
}
function kissYou(){
//苍老师叫你过去,然后。。。
echo "Hey Boy Come Here! 么么哒 ~ <br/>";
//她心中的你觉得好爽,于是大叫
$this->heart->daJiao();
}
}
//new一个苍老师
$CangLaoShi = new CangLaoShi();
//将你放在她心里
$CangLaoShi->addHeart(new You());
//让苍老师来亲你
$CangLaoShi->kissYou();