php觀察者模式
阿新 • • 發佈:2017-05-07
sub 定義 發送消息 bject pan list 註冊 消息 notify
<?php //定義接口,觀察者統一的方法,便於subject調用通知 interface Observerable { public function update(); } //定義觀察者1 class Observer1 implements Observerable { public function update() { echo "我是觀察者1"; } } //定義觀察者2 class Observer2 implements Observerable { public function update() { echo"我是觀察者2"; } } // 主題,被觀察的目標 class Subject { private $observer_list = array(); // 註冊觀察者 public function reg_observer($observer) { if(!in_array($observer,$this->observer_list)) { $this->observer_list[] = $observer; } } // 向觀察者發送消息,告訴它主題有改變 publicfunction notify() { if(!empty($this->observer_list)) { foreach($this->observer_list as $ob) { $ob->update(); } } } } $ob1 = new Observer1(); $ob2 = new Observer2(); $subj = new Subject(); // 註冊觀察者 $subj->reg_observer($ob1); $subj->reg_observer($ob2); // 向觀察者推送消息 $subj->notify();
php觀察者模式