国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
常用設(shè)計(jì)模式之觀察者模式
觀察者模式(Observer Pattern):
 
        觀察者模式必須包含兩個(gè)角色:觀察者(Observer)和被觀察對(duì)象(Observable)。觀察者和被觀察者之間存在“觀察”的邏輯關(guān)系。當(dāng)被觀察著發(fā)生改變時(shí),觀察者就會(huì)觀察到這樣的變化,并作出相應(yīng)的相應(yīng)。觀察者模式完美地將觀察者和被觀察者的對(duì)象分離開。
        觀察者模式的實(shí)現(xiàn)通常是一個(gè)對(duì)象通過添加一個(gè)方法使本身變得可觀察(Observable)。當(dāng)可觀察的對(duì)象更改時(shí),它會(huì)將消息發(fā)送到已注冊(cè)的觀察者。這些觀察者(Observer)使用該信息執(zhí)行的操作與可觀察的對(duì)象(Observable)無關(guān)。
        下面以系統(tǒng)中的用戶列表為例,當(dāng)新添加用戶時(shí),用戶列表記錄器(觀察者)可以觀察此列表(被觀察者),代碼如下:
 
<?php
interface IObserver {
    function onChanged($sender, $args);
}
 
interface IObservable {
    function addObserver($observer);
}
 
class UserList implements IObservable {
    private $_observers = array();
   
    function addObserver($observer) {
        $this->_observers[] = $observer;
    }
   
    function addUser($name) {
        foreach($this->_observers as $obj) {
            $obj->onChanged($this, $name);
        }
    }
   
    function __toString() {
        return "UserList";
    }
}
 
// 只使用一個(gè)UserListLogger實(shí)例進(jìn)行觀察
class UserListLogger implements IObserver {
    private static $instance = null;
   
    private function __construct() {}
   
    public static function getInstance() {
        if(self::$instance == null) {
            self::$instance = new UserListLogger();
        }
        return self::$instance;
    }
   
    function onChanged($sender, $args) {
        echo $args . "被添加到用戶列表" . $sender . "中<br>";
    }
}
 
$ul = new UserList();
$ul->addObserver(UserListLogger::getInstance());
$ul->addUser("趙二");
$ul->addUser("張三");
 
$ul2 = new UserList();
$ul2->addObserver(UserListLogger::getInstance());
$ul2->addUser("李四");
 
$ul->addUser("王五");
?>
 
        觀察者模式的類關(guān)系圖:
        觀察者模式的運(yùn)行結(jié)果:
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
設(shè)計(jì)模式-觀察者設(shè)計(jì)模式
.NET設(shè)計(jì)模式(19):觀察者模式(Observer Pattern)
什么時(shí)候使用觀察者模式
Java:應(yīng)用Observer接口實(shí)踐Observer模式
面向接口編程詳解(三)——模式研究
【C#設(shè)計(jì)模式-觀察者模式】
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服