国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP觀察者模式實例分析【對比JS觀察者模式】

2024-05-05 00:09:11
字體:
來源:轉載
供稿:網友

本文實例講述了PHP觀察者模式。分享給大家供大家參考,具體如下:

1.用js實現觀察者模式

<!DOCTYPE html><html><head>    <title></title>    <style type="text/css">    div{width: 100px;height: 100px;border: 1px #999 solid;margin-bottom: 5px;}    </style></head><body><!--我們讓div對象觀察select的變化,selecte變化就會通知這個2個對象,并引起這2個對象的變化,實現觀察者模式。 --> <h1>用觀察者模式切換頁面風格</h1> <select>     <option value="male">男式風格</option>     <option value="female">女士風格</option> </select> <button onclick="t1()">觀察學習區</button> <button onclick="t2()">不觀察學習區</button> <div id="content">我是內容</div> <div id="ad">我是廣告</div> <div id="study">學習</div></body><script type="text/javascript">    var sel = document.getElementsByTagName('select')[0];    sel.observers = {};    sel.attach = function(key,obj){        this.observers[key] = obj;    }    sel.detach = function(key){        delete this.observers[key];    }    sel.onchange = sel.notify = function(){        for(var key in this.observers){            this.observers[key].update(this);        }    }    //客戶端    var content = document.getElementById('content');    var ad = document.getElementById('ad');    content.update = function(ob){        if (ob.value == 'male') {            this.style.backgroundColor = 'gray';        }else if(ob.value == 'female'){            this.style.backgroundColor = 'pink';        }    }    ad.update = function(ob){        if (ob.value == 'male') {            this.innerHTML = '汽車';        }else if(ob.value == 'female'){            this.innerHTML = '減肥';        }    }    //讓content觀察select的變化    sel.attach('content',content);    sel.attach('ad',ad);    //新增監聽study區    var study = document.getElementById('study');    study.update = function(ob){        if (ob.value == 'male') {            this.innerHTML = '學習計算機';        }else if(ob.value == 'female'){            this.innerHTML = '學習美容';        }    }    sel.attach('study',study);    function t1(){        sel.attach('study',study);    }    function t2(){        sel.detach('study');    }</script></html>

2.用php實現觀察模式

<?php//php實現觀察者//php5中提供觀察者observer和被觀察者subject的接口class User implements SplSubject{    public $lognum;    public $hobby;    protected $observers = null;    public function __construct($hobby)    {        $this->lognum = rand(1,10);        $this->hobby = $hobby;        $this->observers = new SplObjectStorage();    }    public function login()    {        //操作session等        $this->notify();    }    public function attach(SPLObserver $observer)    {        $this->observers->attach($observer);    }    public function detach(SPLObserver $observer)    {        $this->observers->detach($observer);    }    public function notify()    {        $this->observers->rewind();        while ($this->observers->valid()) {            $observer = $this->observers->current();            $observer->update($this);            $this->observers->next();        }    }}//用戶安全登錄模塊class Safe implements SPLObserver{    public function update(SplSubject $subject)    {        if ($subject->lognum < 3) {            echo '這是第' . $subject->lognum . '次安全登錄<br>';        }else{            echo '這是第' . $subject->lognum . '次登錄,異常<br>';        }    }}//廣告模塊class Ad implements SPLObserver{    public function update(SplSubject $subject)    {        if ($subject->hobby == 'sports') {            echo '英超開始啦<br>';        }else{            echo '好好學習<br>';        }    }}//實施觀察// $user = new User('sports');$user = new User('study');$user->attach(new Safe());$user->attach(new Ad());$user->login();//登錄

 

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 永州市| 利辛县| 商河县| 巴彦淖尔市| 崇明县| 永安市| 长武县| 宁阳县| 平顺县| 吉首市| 荆门市| 黄梅县| 东山县| 张家口市| 鄂伦春自治旗| 小金县| 西畴县| 崇信县| 宝坻区| 白玉县| 白河县| 玛沁县| 杨浦区| 毕节市| 含山县| 苏州市| 镇安县| 景宁| 德令哈市| 丹凤县| 延寿县| 长沙市| 大化| 炎陵县| 鸡泽县| 盐津县| 惠安县| 湖南省| 永新县| 九龙坡区| 枣强县|