php实现观察者模式

原创
2014/09/18 22:33
阅读数 174
<meta charset='utf-8' />
<title>观察者模式</title>
<?php
    class Tongzhi implements SPLSubject
    {
        protected $subs = array();
        public $username = '我是被观察者';

        public function __construct(){
        }
        
        public function attach(SPLObserver $sub){
            $this->subs[] = $sub;
        }

        public function detach(SPLObserver $sub){
            $keys = array_keys($this->subs,$sub);
            $key = $keys[0];
            unset($this->subs[$key]);
        }

        public function notify(){
            foreach ($this->subs as $value) 
            {
                $value->update($this);
            }
        }
    }

    class Obs1 implements SPLObserver
    {
        public function update(SPLSubject $tz){
            echo $tz->username.',我是观察者1<br />';
        }
    }

    class Obs2 implements SPLObserver
    {
        public function update(SPLSubject $tz){
            echo $tz->username.',我是观察者2<br />';
        }
    }

    class Obs3 implements SPLObserver
    {
        public function update(SPLSubject $tz){
            echo $tz->username.',我是观察者3<br />';
        }
    }

    $tz = new Tongzhi;
    $tz->attach(new Obs1);
    $tz->attach(new Obs2);
    $tz->detach(new Obs2);
    $tz->attach(new Obs3);
    $tz->notify();
?>



展开阅读全文
打赏
0
5 收藏
分享
加载中
更多评论
打赏
0 评论
5 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部