php设计模式 - 观察者模式

发布时间:2019-08-07 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php设计模式 - 观察者模式脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

观察者模式 类图

观察者模式类图

@H_360_8@
  • Suject.php

  • <?php
    /**
     * @Author: Cizel
     * @Date:   2016-04-07 16:49:03
     * @Last Modified by:   Cizel
     * @Last Modified time: 2016-04-07 18:10:15
     */
    interface Subject{
        public function addObserver($observer);
        public function deleteObserver($observer);
        public function notifyObserver();
    }
    <?php
    /**
     * @Author: Cizel
     * @Date:   2016-04-07 16:54:35
     * @Last Modified by:   Cizel
     * @Last Modified time: 2016-04-07 18:37:12
     */
    
    class ConcreteSubject implements Subject{
        PRivate $observerList;
        public function __construct(){
            $this->observerList = null;
        }
        public function getObserverList(){
            return $this->observerList;
        }
        public function addObserver($observer){
            if($this->observerList==null || in_array($observer, $this->observerList,true) == false){
                $this->observerList[] = $observer;
            }
        }
        public function deleteObserver($observer){
            if(($key = array_search($observer,$this->observerList)) !==false){
                unset($this->observerList[$key]);
            }
        }
        public function notifyObserver(){
            foreach ($this->observerList as $key => $value) {
                $value->update();
            }
        }
    
    }
    • Observer.php

    
    <?php
    /**
     * @Author: Cizel
     * @Date:   2016-04-07 17:07:13
     * @Last Modified by:   Cizel
     * @Last Modified time: 2016-04-07 17:42:15
     */
    interface Observer{
        public function update();
    }
    • ConcreteObserver.php

    <?php
    /**
     * @Author: Cizel
     * @Date:   2016-04-07 17:09:03
     * @Last Modified by:   Cizel
     * @Last Modified time: 2016-04-07 18:14:30
     */
    
    
    class ConcreteObserver implements Observer{
        public function update(){
            echo  "res update <br />";
        }
    }
    • index.php 入口文件

    <?php
    /**
     * @Author: Cizel
     * @Date:   2016-04-07 17:10:54
     * @Last Modified by:   Cizel
     * @Last Modified time: 2016-04-07 18:27:34
     */
    function __autoload($classname) {
        require_once($classname.".php");
    }
    $center = new ConcreteSubject();
    $observer1 = new ConcreteObserver();
    $observer2 = new ConcreteObserver();
    $center->addObserver($observer1);
    $center->addObserver($observer2);
    $center->notifyObserver();
    echo "delete 1 <br />";
    $center->deleteObserver($observer2);
    $center->notifyObserver();

    笔者在校期间都是使用强类型的语言C++/Java等去实现算法和数据结构,现在写php感到很是不习惯。感觉php类面向对象,调试程序的时候非常麻烦。不知道xdebug可不可以解决这个问题。

    脚本宝典总结

    以上是脚本宝典为你收集整理的php设计模式 - 观察者模式全部内容,希望文章能够帮你解决php设计模式 - 观察者模式所遇到的问题。

    如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。