介绍
这篇文章将为大家详细讲解有关怎么在php中实现一个简单的观察者模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
观察者模式是设计模式中比较常见的一个模式,包含两个或者更多的互相交互的类。这一模式允许某个类观察另外一个类的状态,当被观察类的状态发生变化时候,观察者会进行得到通知进而更新相应状态。
php的SPL标准类库提供了SplSubject和SplObserver接口来实现,被观察的类叫主题,负责观察的类叫观察者。这一模式是SplSubject类维护了一个特定状态,
当这个状态发生变化时候,它就会调用通知方法。调用通知方法时,所有之前使用附加方法注册的SplObserver实例的更新方法都会调用,演示如下:
class DemoSubject implements SplSubject { ,,,private 观察员,美元,美元的价值; , ,,,public function __construct () { ,,,,,,,这和美元;gt; observers =,数组(); ,,,} , ,,,public function 附加(SplObserver 观察者美元){ ,,,,,,,这和美元;gt;观察家[],=,观察者美元; ,,,} , ,,,public function 分离(SplObserver 观察者美元){ ,,,,,,,如果($ idx =,函数(观察者,美元,这和美元;gt;观察家,true)) { ,,,,,,,,,,,设置(这和美元;gt;观察家[$ idx]); ,,,,,,,} ,,,} , ,,,public function 通知(){ ,,,,,,,foreach(这和美元;gt; observers  as 观察者美元){ ,,,,,,,,,,,观察者和美元;gt;更新($); ,,,,,,,} ,,,} , ,,,public function setValue(美元值){ ,,,,,,,这和美元;gt; value =,美元价值; ,,,,,,,这和美元;gt;通知(); ,,,} , ,,,public function getValue () { ,,,,,,,return 这和美元;gt;价值; ,,,} } , class DemoObserver  implements SplObserver { ,,,public function 更新(SplSubject 主题美元){ ,,,,,,,echo & # 39;从而new value is & # 39;只主题和美元;gt; getValue (); ,,,} } , $ subject =, new DemoSubject (); $ observer =, new DemoObserver (); 主题和美元;gt;附加($观察者); 主题和美元;gt; setValue (5);