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

PHP实现观察者模式

PHP中文网
Lepaskan: 2016-05-25 17:14:37
asal
901 orang telah melayarinya

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();

?>
Salin selepas log masuk


以上就是PHP实现观察者模式的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan