首页 > 代码库 > php实现观察者模式

php实现观察者模式

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



php实现观察者模式