观察者模式是指一个观察者类Observer和一个被观察者类observed,被观察者的某些方法的实现会激发观察者的某些行为,举一个例子:一对情侣,女的生气了,男的看到了就会安慰她。这就是观察者模式,代码如下
1 <?php 2 interface iboyfriend{ 3 function comfort(); 4 5 } 6 interface igirlfriend{ 7 public function Attach($Observer); //添加观察者 8 public function Detach($Observer); //踢出观察者 9 public function Notify(); //满足条件时通知观察者 10 public function Sorrow(); //观察条件 11 } 12 13 class girlfriend implements igirlfriend{ 14 public function Attach($Observer){ 15 $this->_observers[]=$Observer; 16 } 17 public function Detach($Observer){ 18 unset($this->_observers[$Observer]); 19 } 20 public function Notify(){ 21 foreach ($this->_observers as $observer){ 22 $observer->comfort(); 23 } 24 } 25 26 public function Sorrow(){ 27 echo 'girl is sorrow'; 28 $this->Notify(); 29 } 30 } 31 32 class boyfriend implements iboyfriend{ 33 public function comfort(){ 34 echo '<br/>I am coming ,baby'; 35 } 36 } 37 38 $zdl=new girlfriend(); 39 $ljc=new boyfriend(); 40 $zdl->Attach($ljc); 41 $zdl->Sorrow(); 42 43 44 ?>
运行一下,成功!由于能力有限,这里举的例子比较简单。