PHP 设计模式之观察者模式实现

<?php
Interface Obseverr{
   public function update(Obseverable $subject);
}
abstract class Obsever implements Obseverr{
   protected $date;
   public function update(Obseverable $date){
      $this->date = $date;
   }
}
abstract class Obseverable{
    private $Obsevers = array();
    public function addObsever(Obsever $obj){
        array_push($this->Obsevers,$obj);
    }
    public function notifyObsevers(){
        foreach( $this->Obsevers as $v){
           $v->update($this);
        }
    }
}
class test1 extends Obsever{
    public function fire(){
       foreach($this->date->getRecord() as $k => $v){
          $ret .= $v;
       }
       echo '类别1输出'.$ret.'<br>';
    }
}
class test2 extends Obsever{
    public function fire(){
       foreach($this->date->getRecord() as $k => $v){
          $ret .= $v;
       }
       echo '类别2输出'.$ret.'<br>';
    }
}
class dateResource extends Obseverable{
     private $record = array();
     public function addRecord($recArr){
array_push($this->record,$recArr);
$this->notifyObsevers(); } public function getRecord(){ return $this->record; } } $DateIns = new dateResource(); $DateIns->addObsever($test1Ins = new test1()); $DateIns->addObsever($test2Ins = new test2()); $DateIns->addRecord('xiaojiang1'); $test1Ins->fire(); $DateIns->addRecord('xiaojiang2'); $test1Ins->fire(); $test2Ins->fire(); ?>

 用法和用例 http://blog.csdn.net/alpeace/article/details/7588042

posted @ 2012-07-18 00:08  ﹏Sakura  阅读(379)  评论(0编辑  收藏  举报