1. 程式人生 > >php觀察者模式

php觀察者模式

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; } } // 向觀察者發送消息,告訴它主題有改變 public
function 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觀察者模式