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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 单例模式(Singleton Pattern):顾名思义,就是只有一个实例。作为对象的创建模式,单例模式确保某一个...
    程序员祝融阅读 4,816评论 0 4
  • 问题: 需要一个对象可以被系统中的任何对象使用 对象不能被随意被覆盖 系统不能有超过一个该对象 实现: 由于构造函...
    雨而已阅读 1,418评论 0 0
  • 单例模式(Singleton Pattern 单件模式或单元素模式) 单例模式确保某个类只有一个实例,而且自行实例...
    积_渐阅读 2,571评论 0 1
  • 单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的。所有的单例模...
    henryspace阅读 1,441评论 0 0
  • 从东海跳出来—— 一个傻乎乎的老大 有时像性烈如火的猛张飞 有时又像一位温柔善良的姑娘 全身系满了无数飘带 飘带上...
    向春光原创文学阅读 3,443评论 0 4

友情链接更多精彩内容