zoukankan      html  css  js  c++  java
  • php设计模式之观察者模式

    观察者模式以前一直不懂,现在有时间从网上搞了一发,自己写了一遍

    <?php
    
    /**
     * 继承PhP的spl接口实现被观察的对象
     * Class MyObject
     */
    class MyObject implements SplSubject
    {
        //定义观察者的集合
        public $observers;
    
        //定义被观察的属性
        public $name;
    
        /**
         * 用Spl的objectStorage进行操作
         * MyObject constructor.
         */
        public function __construct($name)
        {
            $this->observers = new SplObjectStorage();
            $this->name = $name;
        }
    
        /**
         * 增加观察者
         * @param SplObserver $observer 观察者对象
         */
        public function attach(SplObserver $observer)
        {
           $this->observers->attach($observer);
        }
    
        /**
         * 减少观察者
         * @param SplObserver $observer 观察者对象
         */
        public function detach(SplObserver $observer)
        {
            $this->observers->detach($observer);
        }
    
        /**
         * 进行更改通知,通知观察者的对象发生改变
         */
        public function notify()
        {
            // TODO: Implement notify() method.
    
            foreach ($this->observers as $observer) {
                $observer->update($this);
            }
        }
    
        /**
         * 获取名称
         */
        public function getName()
        {
            return $this->name;
        }
    
    
    }
    
    /**
     * 观察者的类别,继承splObserver
     * Class MyObserver
     */
    class MyObserver implements SplObserver
    {
        public function update(SplSubject $subject)
        {
            echo $subject->getName().PHP_EOL;
        }
    }
    
    $observer1 = new MyObserver();
    $observer2 = new MyObserver();
    $subject = new MyObject('哈哈哈哈');
    $subject->attach($observer1);
    $subject->attach($observer2);
    $subject->notify();
  • 相关阅读:
    Redis安装测试
    linux 查看磁盘空间大小
    冷备份与热备份、双机热备与容错
    IDEA在编辑时提示could not autowire
    IntelliJ IDEA 快捷键和设置
    POI实现EXCEL单元格合并及边框样式
    metaq架构原理
    二叉树
    开启“树”之旅
    巧妙的邻接表(数组实现)
  • 原文地址:https://www.cnblogs.com/matengfei123/p/8022572.html
Copyright © 2011-2022 走看看