gpt4 book ai didi

php设计模式 Observer(观察者模式)

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章php设计模式 Observer(观察者模式)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

代码如下

<?php  /**  * 观察者模式  *  * 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新  * 能够便利地创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定功能  * 插件系统  */  class Observerable  {  private $_observers = array();  public function registerObserver($observer)  {  $this->_observers[] = $observer;  }  public function removeObserver($observer)  {  $key = array_search($observer,$this->_observers);  if(!($key === false))  {  unset($this->_observers[$key]);  }  }  public function notifyObservers()  {  foreach($this->_observers as $observer)  {  if($observer instanceof Observer) $observer->update($this);  }  }  }  interface Observer  {  public function update($observer);  }  interface DisplayElement  {  public function display();  }  // -- 实例类定义  class NewsObserverable extends Observerable  {  private $_sports_news;  public function setSportsNews($data)  {  $this->_sports_news = $data;  $this->notifyObservers();  }  public function getSportsNews()  {  return $this->_sports_news;  }  private $_local_news;  public function setLocalNews($data)  {  $this->_local_news = $data;  $this->notifyObservers();  }  public function getLocalNews()  {  return $this->_local_news;  }  }  class SportsNews implements Observer,DisplayElement  {  private $_data = null;  public function update($observer)  {  if($this->_data != $observer->getSportsNews())  {  $this->_data = $observer->getSportsNews();  $this->display();  }  }  public function display()  {  echo $this->_data.date("Y-m-d H:i:s")."<br/>";  }  }  class LocalNews implements Observer,DisplayElement  {  private $_data = null;  public function update($observer)  {  if($this->_data != $observer->getLocalNews())  {  $this->_data = $observer->getLocalNews();  $this->display();  }  }  public function display()  {  echo $this->_data.date("Y-m-d H:i:s")."<br/>";  }  }  // -- 实例化 ---  $objObserver = new NewsObserverable();  $local = new LocalNews();  $sports = new SportsNews();  $objObserver->registerObserver($local);  $objObserver->registerObserver($sports);  $objObserver->setSportsNews("sports news 1 ");  $objObserver->setLocalNews("local news 1 ");  $objObserver->removeObserver($sports);  $objObserver->setLocalNews("local news 2 ");  $objObserver->setSportsNews("sports news 2 ");  $objObserver->removeObserver($local);  $objObserver->setLocalNews("local news 3 ");  。

最后此篇关于php设计模式 Observer(观察者模式)的文章就讲到这里了,如果你想了解更多关于php设计模式 Observer(观察者模式)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com