设计模式 PHP实现观察者模式
PHP实现观察者模式 观察者模式属于行为模式,是定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。它完美的将观察
观察者模式属于行为模式,是定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。它完美的将观察者对象和被观察者对象分离。可以在独立的对象(主体)中维护一个对主体感兴趣的依赖项(观察器)列表。让所有观察器各自实现公共的 Observer接口,以取消主体和依赖性对象之间的直接依赖关系。
[PHP]代码
php;toolbar:false;"><?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 颜色名称转换为16进制表示
精彩图集
精彩文章