设计模式(九):观察者模式

2018-12-09  本文已影响0人  骑着母猪砍大象

转载请注明作者和出处https://www.jianshu.com/p/58b0e4811383

运行平台: Windows

php版本: php7.0

作者简介: 一个本该成为游戏职业选手却被编程耽误的程序员


当一个对象发生状态改变的时候,依赖他的对象会全部收到通知,并自动更新,这就是观察者模式(observer),例如,班主任来了,需要通知小王,小李,小红三个人。

<?php
// 主题接口
interface Subject{
    public function register(PersonObserver $observer);
    public function notify();
}
// 观察者接口
interface PersonObserver{
    public function name();
}
// 主题
class Action implements Subject{
    public $_observers=array();
    public function register(PersonObserver $observer){
        $this->_observers[]=$observer;
    }

    public function notify(){
        foreach ($this->_observers as $observer) {
            echo '老师来了,收起小动作'.$observer->name();
        }

    }
}

// 观察者
class XiaoMing implements PersonObserver{
    public function name(){
        return "小明".PHP_EOL;
    }
}
class Xiaohong implements PersonObserver{
    public function name(){
        return "小红".PHP_EOL;
    }
}
class XiaoWang implements PersonObserver{
    public function name(){
        return "小王".PHP_EOL;
    }
}



// 应用实例
$action=new Action();
$action->register(new XiaoMing());
$action->register(new Xiaohong());
$action->register(new XiaoWang());
$action->notify();

运行结果:

老师来了,收起小动作小明
老师来了,收起小动作小红
老师来了,收起小动作小王

上一篇 下一篇

猜你喜欢

热点阅读