PHP观察者模式原理与简单实现方法示例
本文实例讲述了服务器端编程语言(专业超文本预处理器的缩写)观察者模式原理与简单实现方法。分享给大家供大家参考,具体如下:
当一个对象状态发生改变后,会影响到其他几个对象的改变,这时候可以用观察者模式。像wordpress这样的应用程序中,它容外部开发组开发插件,比如用户授权的博客统计插件、积分插件,这时候可以应用观察者模式,先注册这些插件,当用户发布一篇博文后,就回自动通知相应的插件更新。
观察者模式符合接口隔离原则,实现了对象之间的松散耦合。
观察者模式用户模式图:
在php SPL中已经提供SplSubject和SqlOberver接口
接口SplSubject{函数attach(SplObserver $ observer);函数detach(SplObserver $ observer);函数notify();}接口SqlObserver{函数更新(SplSubject $ subject);}下面具体实现上面例子
科目类实现SplSubject { private $观察者公共函数attach(SplObserver $ observer){ if(!in_array($observer,$ this-observer)){ $ this-observer[]=$ observer;} }公共函数分离(SplObserver $ observer){ if(false!=($ index=array _ search($ observer,$ this-observer)){ unset($ this-observer[$ index]);} }公共函数post() { //post相关代码$ this-notify();}私有函数notify(){ foreach($ this-observer as $ observer){ $ observer-update($ this);} }公共函数setCount($count) { echo '数据量加$ count}公共函数setIntegral($integral) { echo '积分量加$ integral} }类Observer1实现了sp loobserver { public function update($ subject){ $ subject-setCount(1);} }类Observer2实现了SplObserver { public function update($ subject){ $ subject-set integration(10);} }客户端类{公共函数测试(){ $ Subject=new Subject();$ subject-attach(新观察者R1());$ subject-attach(新观察者R2());$ subject-post();//输出:数据量加一积分量加10 }}更多关于服务器端编程语言(专业超文本预处理器的缩写)相关内容感兴趣的读者可查看本站专题: 《php面向对象程序设计入门教程》 、 《PHP基本语法入门教程》 、 《PHP数组(Array)操作技巧大全》 、 《php字符串(string)用法总结》 、 《php+mysql数据库操作入门教程》 及《php常见数据库操作技巧汇总》
希望本文所述对大家服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。
版权声明:PHP观察者模式原理与简单实现方法示例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。