您好,欢迎访问一九零五行业门户网

php设计模式 Observer (观察者模式)

25种php设计模式,你全都知道吗?下面用代码介绍观察者模式(observer模式)
_observers[] = $observer; } public function removeobserver($observer) { $key = array_search($observer, $this->_observers); if (!($key === false)) { unset($this->_observers[$key]); } } public function notifyobservers() { foreach ($this->_observers as $observer) { if ($observer instanceof observer) $observer->update($this); } }}interface observer { public function update($observer);}interface displayelement { public function display();}// -- 实例类定义class newsobserverable extends observerable { private $_sports_news; public function setsportsnews($data) { $this->_sports_news = $data; $this->notifyobservers(); } public function getsportsnews() { return $this->_sports_news; } private $_local_news; public function setlocalnews($data) { $this->_local_news = $data; $this->notifyobservers(); } public function getlocalnews() { return $this->_local_news; }}class sportsnews implements observer, displayelement { private $_data = null; public function update($observer) { if ($this->_data != $observer->getsportsnews()) { $this->_data = $observer->getsportsnews(); $this->display(); } } public function display() { echo $this->_data . date(y-m-d h:i:s) .
; }}class localnews implements observer, displayelement { private $_data = null; public function update($observer) { if ($this->_data != $observer->getlocalnews()) { $this->_data = $observer->getlocalnews(); $this->display(); } } public function display() { echo $this->_data . date(y-m-d h:i:s) .
; }}// -- 实例化 ---$objobserver = new newsobserverable();$local = new localnews();$sports = new sportsnews();$objobserver->registerobserver($local);$objobserver->registerobserver($sports);$objobserver->setsportsnews(sports news 1 );$objobserver->setlocalnews(local news 1 );$objobserver->removeobserver($sports);$objobserver->setlocalnews(local news 2 );$objobserver->setsportsnews(sports news 2 );$objobserver->removeobserver($local);$objobserver->setlocalnews(local news 3 );
其他相关设计模式:
备忘录模式(memento模式) 观察者模式(observer模式) 模板方法模式(template method模式) 命令模式(command模式) 组合模式(composite模式) 享元模式(flyweight模式) 策略模式(strategy模式) 状态模式(state模式) 适配器模式(adapter模式) 工厂模式(factory模式) 原型模式(prototype模式) 外观模式(facade模式) 单例模式(singleton模式) 桥梁模式(bridge模式) 装饰模式(decorator模式) 抽象工厂模式(abstract factory模式) 建造者模式(builder模式) 访问者模式(visitor模式) 解释器模式(interpreter模式) 中介者模式(mediator模式) 职责链模式(chain of responsibility模式) 代理模式(proxy模式) 迭代器模式(interator模式) 数据访问对象模式(dao模式) 委托模式(delegation模式)
其它类似信息

推荐信息