🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 观察者模式(Observer Pattern) > 一种**发布-订阅**的模式,当一个对象状态发生变化时,它会**通知所有依赖它的对象**。 ### ✅ 适用场景: * 系统中某个对象状态变化需要通知其他对象(如用户下单后通知物流、发邮件、记录日志等) * 实现事件机制(Laravel 的事件系统) ### 🔧 示例:PHP 实现用户下单触发多个后续操作 ~~~ php复制编辑// 抽象观察者接口 interface Observer { public function update(string $event); } // 具体观察者 class EmailNotifier implements Observer { public function update(string $event) { echo "发送邮件:$event\n"; } } class LogWriter implements Observer { public function update(string $event) { echo "写日志:$event\n"; } } // 主题(发布者) class OrderSubject { private array $observers = []; public function attach(Observer $observer) { $this->observers[] = $observer; } public function notify(string $event) { foreach ($this->observers as $observer) { $observer->update($event); } } public function placeOrder() { echo "用户下单\n"; $this->notify("订单已创建"); } } // 用法 $order = new OrderSubject(); $order->attach(new EmailNotifier()); $order->attach(new LogWriter()); $order->placeOrder(); ~~~