当前位置: 首页 > 后端技术 > PHP

PHP设计模式之观察者模式(Observer)代码示例(27)

时间:2023-03-29 16:03:31 PHP

目的当一个对象的状态发生变化时,所有依赖它的对象都会得到通知并自动更新。它使用低耦合方法。如果例子内容不错,希望大家多多支持鼓励点赞/点赞,欢迎一起交流;另外,大家有什么想看的问题和内容,都可以在评论里提出哦!PHP为快速实现观察者模式定义了2个接口:SplObserver和SplSubject。UML图★官方PHP进阶学习交流社区“点击”管理整理部分资料,BAT等一线大厂准备进阶知识体系(相关学习资料及笔试面试题)且不限于:分布式架构、高扩展、高性能、高并发、服务器性能调优、TP6、laravel、YII2、Redis、Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等知识点进阶干货代码用户。phpobservers=new\SplObjectStorage();}publicfunctionattach(\SplObserver$observer){$this->observers->attach($observer);}publicfunctiondetach(\SplObserver$observer){$this->observers->detach($observer);}publicfunctionchangeEmail(string$email){$this->email=$email;$this->通知();}publicfunctionnotify(){/**@var\SplObserver$observer*/foreach($this->observersas$observer){$observer->update($this);}}}UserObserver.phpchangedUsers[]=clone$subject;}/***@returnUser[]*/publicfunctiongetChangedUsers():array{return$this->changedUsers;}}TestTests/ObserverTest.phpattach($observer);$user->changeEmail('foo@bar.com');$this->assertCount(1,$observer->getChangedUsers());}}PHP互联网架构师成长之路*《设计模式》终极指南PHP互联网架构师50K成长指南+行业问题解决大纲(持续更新中)面试10家公司,拿到9个offer,2020年PHP面试题如果喜欢我的文章,如果你想和更多的资深开发者交流学习,获得更多大厂面试相关的技术咨询和面试指导,欢迎加入我们的群,密码:phpzh(君阳号856460874)2020年最新PHP进阶教程,全系列!如果内容不错,希望大家多多支持鼓励点赞/点赞,欢迎一起交流;另外,如果大家有什么问题,建议,可以在评论中提出你们想看的内容