PHP观察者模式
1:观察者模式(Observer),当一个对象状态发生变化时,依赖它的对象全部会收到通知,并自动更新。
2:场景:一个事件发生后,要执行一连串更新操作。传统的编程方式,就是在事件的代码之后直接加入处理的逻辑。当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件的主体代码。
3:观察者模式实现了低耦合,非侵入式的通知与更新机制。
定义一个事件触发抽象类。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | EventGenerator.php <?php require_once 'Loader.php' ; abstract class EventGenerator{ private $observers = array(); function addObserver(Observer $observer){ $ this ->observers[]=$observer; } function notify(){ foreach ($ this ->observers as $observer){ $observer->update(); } } } 定义一个观察者接口 Observer.php <?php require_once 'Loader.php' ; interface Observer{ function update(); //这里就是在事件发生后要执行的逻辑 } //一个实现了EventGenerator抽象类的类,用于具体定义某个发生的事件 实现 require 'Loader.php' ; class Event extends EventGenerator{ function triger(){ echo "Event<br>" ; } } class Observer1 implements Observer{ function update(){ echo "逻辑1<br>" ; } } class Observer2 implements Observer{ function update(){ echo "逻辑2<br>" ; } } $ event = new Event(); $ event ->addObserver( new Observer1()); $ event ->addObserver( new Observer2()); $ event ->triger(); $ event ->notify(); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2017-02-27 FFMpeg首次使用
2017-02-27 Yii的URL助手
2017-02-27 Yii的HTML助手
2017-02-27 Yii的数组助手类