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);