如何在PHP中实现一个观察者模式

  介绍

这期内容当中小编将会给大家带来有关如何在PHP中实现一个观察者模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>观察者模式UML图:

如何在PHP中实现一个观察者模式

在PHP SPL中已经提供SplSubject和SqlOberver接口

interface  SplSubject   {   function 才能;附加(SplObserver 观察者美元);   function 才能;分离(SplObserver 观察者美元);   function 才能通知();   }   interface  SqlObserver   {   function 才能更新(SplSubject 主题美元);   }

下面具体实现上面例子

class  Subject  implements  SplSubject   {   private 才能;美元观察员;   public 才能;function 附加(SplObserver 观察者美元)   {才能   ,,,if  (! in_array(观察者,美元,美元这→观察员)),{   ,,,,,这个→美元观察家[],=,观察者美元;   ,,,}   ,,}   public 才能;function 分离(SplObserver 观察者美元)   {才能   ,,,if  (false  !=, ($ index =,函数(观察者,美元,美元这→观察员))),{   ,,,,,设置($ this→观察家[美元指数]);   ,,,}   ,,}   public 才能;function  post ()   {才能   ,,,//职位相关的代码   ,,,这美元→通知();   ,,}   private 才能;function  notify ()   {才能   ,,,foreach  ($ this→observers  as 观察者美元),{   ,,,,,观察者→美元更新($);   ,,,}   ,,}   public 才能;function  setCount(美元数)   {才能   ,,,echo “数据量加“,只数美元;   ,,}   public 才能;function  setIntegral(积分)   {才能   ,,,,echo “积分量加“,只美元积分;   ,,}   }   class  Observer1  implements  SplObserver   {   public 才能;function 更新(主题)   {才能   ,,,主题→美元,setCount (1);   ,,}   }   class  Observer2  implements  SplObserver   {   public 才能;function 更新(主题)   {才能   ,,,主题→美元,setIntegral (10);   ,,}   }   class 客户端   {   public 才能;function 测试()   {才能   ,,,subject 美元;=,new 主题();   ,,,主题→美元附加(new  Observer1 ());   ,,,主题→美元附加(new  Observer2 ());   ,,,主题→美元post();//输出:数据量加1,积分量加10   ,,}   }

上述就是小编为大家分享的如何在PHP中实现一个观察者模式了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

如何在PHP中实现一个观察者模式