php设计模式-观察者模式

// 观察者模式 主要分为被观察者,观察者
// 当一个对象(被观察者)状态发生变化时,依赖它的对象(观察者)全部会收到通知,并自动更新
// 观察者模式实现了低耦合,非侵入式的通知与更新机制

// 主题接口
interface Subject{
    public function register(Observer $observer);
    public function notify();
}
// 观察者接口
interface Observer{
    public function watch();
}

// 主题
class Action implements Subject{
    public $_observers = array();
    // 把观察者都放在一个数组里
    public function register(Observer $observer){
        $this->_observers[] = $observer;
    }
    // 通知观察者变动
    public function notify(){
        foreach($this->_observers as $observer){
            $observer->watch();
        }
    }
}

// 观察者
class Cat implements Observer{
    public function watch(){
        echo "cat";
    }
}
class Dog implements Observer{
    public function watch(){
        echo "dog";
    }
}
class People implements Observer{
    public function watch(){
        echo "people";
    }
}

// 应用实例
$action = new Action();
$action->register(new Cat());
$action->register(new Dog());
$action->register(new People());
$action->notify();

// 输出 cat dog people

你可能感兴趣的:(php设计模式-观察者模式)