• 技术文章 >php教程 >PHP源码

    PHP实现观察者模式

    PHP中文网PHP中文网2016-05-25 17:14:37原创481
    PHP实现观察者模式

    <?php
    interface Message {
       static function getType();
    };
    
    interface Observer {
       function notifyMsg(Message $msg);
    };
    
    class Subject {
       private $observers = Array();
    
       public function registerObserver(Observer $observer, $msgType) {
        $this->observers[$msgType][] = $observer;   // wyh?
       }
    
       private function notifyMsg(Message $msg) {
        @$observers = $this->observers[$msg->getType()];
        if (!$observers) {
         return;
        }
    
        foreach ($observers as $observer) {
         $observer->notifyMsg($msg);
        }
       }
    
       public function someMethod() {
               sleep(1);
              $this->notifyMsg(new HelloMessage("Michael"));
            }
    
    }
    
    class HelloMessage implements Message {
       private $name;
    
       public function __construct($name) {
        $this->name = $name;
       }
    
       public function getMsg() {
        return "Hello,$this->name!";
       }
    
       static function getType() {
        return "HELLO_TYPE";
       }
    }
    
    class SubObserver implements Observer {
       public function notifyMsg(Message $msg) {
        if ($msg instanceof HelloMessage) {
         echo $msg->getMsg();
        }
       }
    }
    
    $subject = new Subject();
        $observer = new SubObserver();
        $subject->registerObserver($observer, HelloMessage::getType());
        $subject->someMethod();
    
    ?>


    以上就是PHP实现观察者模式的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP,观察者模式
    上一篇:PHP缩略图,满窗格等比例缩小 下一篇:时间比较问题
    Web大前端开发直播班

    相关文章推荐

    • PHP5.3的VC9、VC6、Thread Safe、Non Thread Safe的区别• php 中利用 socket curl file_get_contents模仿用户post发送信息• php mysql 分页显示代码• php 取得客户端IP地址代码• php 值得收藏的常用类汇总
    1/1

    PHP中文网