PHP观察器模式原理和简单实现方法的示例
当一个对象的状态改变,从而影响其他物体的变化,并观察者模式可以用在这个时候。应用如WordPress,这是开发组开发的插件外,如用户授权,整体博客统计插件插件,可用于登记的观察者模式,这些插件,当用户发布一篇博客文章,会自动通知相应的插件更新。
该观测器模式符合接口隔离原理,实现了对象之间的松耦合。
观察者模式UML图:
的splsubject和sqloberver接口已在PHP SPL提供
接口splsubject
{
功能的高度(splobserver $观察);
功能分离(splobserver $观察);
函数通知();
}
接口sqlobserver
{
功能更新(splsubject $);
}
下面的示例是具体实现的
类主体splsubject
{
私人观察员;
公共功能的高度(splobserver $观察)
{
如果(!in_array($美元->观察员,观察员)){
$ $ >观察员;
}
}
公共职能分离(splobserver $观察)
{
如果(假)!=(美元指数= array_search($美元->观察员,观察员)){
unset(美元->观察员{ $指数});
}
}
公共职能岗位()
{
与邮政相关的代码
$ $ >通知();
}
私有函数(通知)
{
foreach(美元美元->观察员Observer){
观察者> >更新($此);
}
}
公共功能setcount(美元计算)
{
返回数据量。$计数;
}
公共功能setintegral(元整)
{
积分加。$积分;
}
}
observer1 splobserver类实现
{
公共功能更新($主题)
{
$(1)-> setcount;
}
}
observer2 splobserver类实现
{
公共功能更新($主题)
{
$(10)-> setintegral;
}
}
类的客户
{
公共功能测试()
{
主语=新主语();
$ ->附加(新observer1());
$ ->附加(新observer2());
($主题> POST);输出:1点加10的数据量
}
}
更多有关PHP相关内容的感兴趣的读者可以查看主题:PHP面向对象编程教程
希望本文能对PHP程序设计有所帮助。