PHP中观察者模式的一个简单示例
在设计模式中,观察者模式是一种较为常见的模式,包括两个或多个交互类。当观察到的类的状态发生变化时,将通知观察者并更新相应的状态。SPL标准类库PHP提供splsubject和splobserver接口,与观察到的类称为主体,负责观察的类称为观察员。这种模式是维持一个特定的国家splsubject类,
这种状态变化时,它调用notify方法。当通知的方法被调用时,所有的附加方法注册的splobserver实例的更新方法会被调用,演示如下:
复制代码代码如下所示:
类demosubject实现splsubject {
私人$观察员,价值;
公共功能__construct(){
$ >观察员=数组();
}
公共功能的高度(splobserver $观测器){
$ $ >观察员;
}
公共职能分离(splobserver $观测器){
如果(美元指数= array_search($美元->观察员,观察员,真)){
unset(美元->观察员{ $ IDX });
}
}
公共函数通知(){
foreach(美元美元->观察员Observer){
观察者> >更新($此);
}
}
公共函数值(美元值){
$这个值;
$ $ >通知();
}
公共职能getValue(){
返回这个值;
}
}
类demoobserver实现splobserver {
更新函数(splsubject $){
echo'the新价值。受美元-> getValue();
}
}
主题=新demosubject(美元);
观察者=新demoobserver(美元);
$主题>附件(观察员);
受美元->设定值(5);