登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

淘尽网 官方博客

淘尽网http://www.tao3w.com做最好的比价网站

 
 
 

日志

 
 

PHP观察者模式(转)  

2010-09-19 14:49:07|  分类: 设计模式 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

观察者模式常用于日志、记录跟踪等场景,例如我们要添加一个用户,添加完毕后需要执行一系列的功能,例如将这个用户写入到日志文件里,在将用户信息显示出来,我们共需要3个类:1、User类,包含add_user方法
观察者模式常用于日志、记录跟踪等场景,例如我们要添加一个用户,添加完毕后需要执行一系列的功能,例如将这个用户写入到日志文件里,在将用户信息显示出来,我们共需要3个类:1、User类,包含add_user方法

2、Log类, 包含onChanged方法

3、View类,包含onChanged方法

观察者模式的核心原理就是:将Log及View对象传递给User类中的一个数组里,然后当User类的add_user方法执行成功后,迭代这个数组,分别使用两个对象的onChanged方法。

观察者模式的好处在于使各个组件之间不必过度耦合。

下面是一个观察者模式的例子:

<?php

    interface IObserver
    {
        public function onChanged( $sender, $name );
    }

    interface IObservable
    {
        public function addCustomer( $name );
    }

    class UserList implements IObservable
    {
        private $_observers = array();

        public function addCustomer( $name )
        {
            foreach ( $this->_observers AS $obs )
            {
                $obs->onChanged( $this, $name);
            }
        }

        public function addObserver( $observer )
        {
            $this->_observers []= $observer;
        }
    }

    class UserListLogger implements IObserver
    {
        public function onChanged( $sender, $args )
        {
            echo "$args added to user list";
        }
    }

    $ul = new UserList();
    $ul->addObserver( new UserListLogger() );
    $ul->addCustomer( "Jack" );

?>
 
 
本篇文章来源于:开发学院 http://edu.codepub.com   原文链接:http://edu.codepub.com/2010/0427/22349.php

  评论这张
 
阅读(434)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018