php中的观察者模式

当一个对象状态发生改变后,会影响到其他几个对象的改变,这时候可以用观察者模式。像wordpress这样的应用程序中,它容外部开发组开发插件,比如用户授权的博客统计插件、积分插件,这时候可以应用观察者模式,先注册这些插件,当用户发布一篇博文后,就回自动通知相应的插件更新。

观察者模式符合接口隔离原则,实现了对象之间的松散耦合。

观察者模式UML图:

php中的观察者模式

//主题接口
 接口Subject {
 public function register(Observer $ observer );
public function notify();
}
 // 观察者接口
 interface Observer {
 public function watch();
}
 //主题
 class Action implements Subject {
 public $ _observers = array ();
公共功能寄存器(Observer $ observer ){
 $ this - > _observers [] = $ observer ;
    }
 //实现借口
 public function notify(){
                                            foreach $ this - > _observers as $ observer ){
 $ observer - > watch();
        }
     }
 }
 //观察者
 实现观察员{
 公共功能的手表(){
 回声“猫看电视<HR />” ;
    }
 }
 class Dog implements Observer {
 public function watch(){
 echo “Dog Watches TV <hr />” ;
    }
 }
 类的实现了Observer {
 public function                                        观看(){
 回声“人们看电视<hr />” ;
    }
 }
 //应用实例
 $ action = new Action();
$ action - > register(new Cat());
$ action - > register(new People());
$ action - > register(new Dog());
$ action - > notify();        
感兴趣的可以尝试一下