首页 > php教程 > PHP源码 > PHP实现观察者模式

PHP实现观察者模式

PHP中文网
发布: 2016-05-25 17:14:37
原创
903 人浏览过

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中文网(www.php.cn)!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板