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(); ?>
生命只有一次。