• 售前

  • 售后

热门帖子
入门百科

PHP筹划模式(观察者模式)

[复制链接]
我放心你带套猛 显示全部楼层 发表于 2021-8-14 15:10:13 |阅读模式 打印 上一主题 下一主题
PHP 计划模式之观察者模式
先容

现在有两派,有的人发起使用计划模式,有的人不发起使用计划模式! 这就向写文章一样,有的人喜好文章按照套路走,比如叙事性子的文章,时间,地点,人物,事故。而有的人喜好写杂文或者散文,有的人喜好写诗词! 现在写代码许多地方类似于写文章,但是在有些地方比写文章必要更多的技能!写文章写多了一样平常也能写出精良的文章,而代码也一样,写多了也能写出许多有些的代码! 许多时候,我看计划模式的时候,有些计划模式只是符合我的代码风俗。但是你硬去套它,那么反而适得其反。——许多时候是学会了招式,在应用中不知不觉的使用上这些招式,才气掌握其道,但是也不要拘泥于招式,正所谓“无招胜有招”吗? 我学计划模式的初衷,就是知道有这么个玩意儿?头脑里有这么个印象,也不会生套它!如果计划模式不符合你的风俗对你阅读代码反而是倒霉的! 观察者模式界说对象的一对多依赖,这样一来,当一个对象改变状态时,它的全部依赖者都会收到通知并自动更新!
计划原则

在观察者模式中,会改变的是主题的状态以及观察者的数目。用这个模式,你可以改变依赖于主题状态的对象,却不必改变主题。——找出步伐中会变化的方面,然后将其和固定不变的方面相分离!  主题和观察者都使用接口:观察者使用主题的接口向主题注册,而主题使用观察者接口通知观察者。这样可以让两者之间运作正常,又同时具有松耦合的优点! ——针对接口编程,不针对实现编程!  观察者模式使用“组合”将许多观察者组合进主题中。对象(观察者——主题)之间的这种关系不是通过继续产生的,而是在运行时使用组合的方式产生的。 ——多用组合,少用继续!
代码
  1. <?php
  2. /**
  3. * 观察者模式
  4. * @author: Mac
  5. * @date: 2012/02/22
  6. */
  7. class Paper{ /* 主题    */
  8.     private $_observers = array();
  9.     public function register($sub){ /*  注册观察者 */
  10.         $this->_observers[] = $sub;
  11.     }
  12.     public function trigger(){  /*  外部统一访问    */
  13.         if(!empty($this->_observers)){
  14.             foreach($this->_observers as $observer){
  15.                 $observer->update();
  16.             }
  17.         }
  18.     }
  19. }
  20. /**
  21. * 观察者要实现的接口
  22. */
  23. interface Observerable{
  24.     public function update();
  25. }
  26. class Subscriber implements Observerable{
  27.     public function update(){
  28.         echo "Callback\n";
  29.     }
  30. }
复制代码
下面是测试代码
  1. /*  测试    */
  2. $paper = new Paper();
  3. $paper->register(new Subscriber());
  4. //$paper->register(new Subscriber1());
  5. //$paper->register(new Subscriber2());
  6. $paper->trigger();
复制代码
总结

当新对象要填入的时候,只必要在主题(又叫可观察者)中进行注册(注册方式许多,你也可以在构造的时候,或者框架访问的接口中进行注册),然后实今世码直接在新对象的接口中进行。这降低了主题对象和观察者对象的耦合度。 好的计划模式不会直接进入你的代码中,而是进入你的大脑中。
到此这篇关于PHP计划模式(观察者模式)的文章就先容到这了,更多相干PHP 观察者模式内容请搜刮脚本之家以前的文章或继续浏览下面的相干文章希望各人以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作