当前位置:首页 > PHP教程 > php高级应用 > 列表

php设计模式之观察者模式定义与用法经典示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-19 12:43:45 浏览: 评论:0 

这篇文章主要介绍了php设计模式之观察者模式定义与用法,结合完整实例形式详细分析了php观察者模式概念、原理、定义与使用方法,代码注释包含详尽的说明,需要的朋友可以参考下。

本文实例讲述了php设计模式之观察者模式定义与用法,分享给大家供大家参考,具体如下:

  1. <?php 
  2. /** 
  3.  * @desc 利用观察者模式,实现不同用户进入显示不同的内容 
  4.  * 1.主题 
  5.  * 2.观察者接口 
  6.  * 3.观察者 
  7.  * ***/ 
  8. interface Observer{ 
  9.   //添加观察者对象 
  10.   public function attach($observer); 
  11.   //删除观察者对象 
  12.   public function detach($observer); 
  13.   //执行观察者需要执行的方法 
  14.   public function doIt(); 
  15. class User implements Observer{ 
  16.   public $obj = []; 
  17.   /* 
  18.   *@desc 传递的对象不在存储的obj对象中则将对象存储到obj中 
  19.   */ 
  20.   public function attach($observer){ 
  21.     if(!in_array($observer,$this->obj)){ 
  22.       $this->obj[] = $observer
  23.     } 
  24.   } 
  25.   /** 
  26.    * @desc 取消观察者观察 
  27.    * **/ 
  28.   public function detach($observer){ 
  29.     $key = array_search($observer$this->obj); 
  30.     if($key){ 
  31.       unset($this->obj[$key]); 
  32.     } 
  33.   } 
  34.   /*** 
  35.    * @desc 获取所有被观察者的对象,执行观察 
  36.    * **/ 
  37.   public function doIt(){ 
  38.     if(!emptyempty($this->obj)){ 
  39.       foreach ($this->obj as $v){ 
  40.         $v->active(); 
  41.       } 
  42.     } 
  43.   } 
  44. /** 
  45.  * @desc 观察者接口 
  46.  * **/ 
  47. interface obsUser{ 
  48.   public function active(); 
  49. /* 
  50.  * @实现零售店用户实现方法类 
  51.  * **/ 
  52. class storeUser implements obsUser{ 
  53.   public function active(){ 
  54.     echo "我是零售店用户\n"
  55.   } 
  56. /** 
  57.  * @desc 实现经销商用户方法类 
  58.  * **/ 
  59. class supplierUser implements obsUser{ 
  60.   public function active(){ 
  61.     echo "我是经销商用户\n"
  62.   } 
  63. /* 
  64.  * 实例化观察者接口类 
  65.  * **/ 
  66. $user = new User(); 
  67. //添加门店用户类到观察者对象 
  68. $user->attach(new storeUser()); 
  69. //添加经销商用户类到观察者对象 
  70. $user->attach(new supplierUser()); 
  71. //监控观察者动作并输出结果 
  72. $user->doIt(); 

运行结果:

我是零售店用户

我是经销商用户

Tags: php设计模式 php观察者模式

分享到: