• <noscript id="ggggg"><dd id="ggggg"></dd></noscript>
    <small id="ggggg"></small> <sup id="ggggg"></sup>
    <noscript id="ggggg"><dd id="ggggg"></dd></noscript>
    <tfoot id="ggggg"></tfoot>
  • <nav id="ggggg"><cite id="ggggg"></cite></nav>
    <nav id="ggggg"></nav>
    成人黃色A片免费看三更小说,精品人妻av区波多野结衣,亚洲第一极品精品无码,欧美综合区自拍亚洲综合,久久99青青精品免费观看,中文字幕在线中字日韩 ,亚洲国产精品18久久久久久,黄色在线免费观看

    JS設計模式之單例模式、組合模式、觀察者模式、策略模式

    2020-3-18    前端達人

    好,下面我將結合一些實例,說一下我對組合模式以及觀察者模式的了解:



    1、組合模式:



    組合模式在對象間形成樹形結構;

    組合模式中基本對象和組合對象被一致對待;

    無須關心對象有多少層, 調用時只需在根部進行調用;

    將多個對象的功能,組裝起來,實現批量執行;

    想象我們現在手上有個萬能遙控器, 當我們回家, 按一下開關, 下列事情將被執行:



    到家了,開門

    開電腦

    開音樂




    // 先準備一些需要批量執行的功能
    class GoHome{
        init(){
            console.log("到家了,開門");
        }
    }
    class OpenComputer{
        init(){
            console.log("開電腦");
        }
    }
    class OpenMusic{
        init(){
            console.log("開音樂");
        }
    }
    
    // 組合器,用來組合功能
    class Comb{
        constructor(){
            // 準備容器,用來防止將來組合起來的功能
            this.skills = [];
        }
        // 用來組合的功能,接收要組合的對象
        add(task){
            // 向容器中填入,將來準備批量使用的對象
            this.skills.push(task);
        }
        // 用來批量執行的功能
        action(){
            // 拿到容器中所有的對象,才能批量執行
            this.skills.forEach( val => {
                val.init();
            } );
        }
    }
    
    // 創建一個組合器
    var c = new Comb();
    
    // 提前將,將來要批量操作的對象,組合起來
    c.add( new GoHome() );
    c.add( new OpenComputer() );
    c.add( new OpenMusic() );
    
    // 等待何時的時機,執行組合器的啟動功能
    c.action();
        // 在內部,會自動執行所有已經組合起來的對象的功能
    



    由此,我們可以總結一下組合模式的特點


    1.批量執行
    2.啟動一個方法,會遍歷多個方法,同時執行,有點類似于遞歸的感覺
    3.組合模式略微耗性能,但是執行方便
     目前只是一個基礎組合。
     高級組合:
    1.組合成樹狀結構,每個對象下,還會有自己的子對象
    2.如果執行了父對象的某個方法,所有的子對象會跟隨執行
    3.組合模式一般建議使用在動態的html結構上,因為組合模式的結構和html的結構,出奇的一致
    4.基本對象和組合對象被一致對待, 所以要保證基本對象(葉對象)和組合對象具有一致方法


    2、觀察者模式:

    觀察者模式也叫也叫Observer模式、訂閱/發布模式,也是由GoF提出的23種軟件設計模式的一種。
    觀察者模式是行為模式之一,它的作用是當一個對象的狀態發生變化時,能夠自動通知其他關聯對象,自動刷新對象狀態,或者說執行對應對象的方法(主題數據改變,通知其他相關個體,做出相應的數據更新)。
    這種設計模式可以大大降低程序模塊之間的耦合度,便于更加靈活的擴展和維護。
    以觀察的角度,發現對應的狀況,處理問題。
    觀察者模式包含兩種角色:
    ①觀察者(訂閱者):會隨時更新自身的信息或狀態(訂閱者可以隨時加入或離開);
    ②被觀察者(發布者):接收到發布者發布的信息,從而做出對應的改變或執行。
    很方便的實現簡單的廣播通信,實現一對多的對應關系。
    核心思想:觀察者只要訂閱了被觀察者的事件,那么當被觀察者的狀態改變時,被觀察者會主動去通知觀察者,而無需關心觀察者得到事件后要去做什么,實際程序中可能是執行訂閱者的回調函數。
    Javascript中實現一個例子:


    日歷

    鏈接

    個人資料

    藍藍設計的小編 http://www.lzhte.cn

    存檔

    主站蜘蛛池模板: 911亚洲国产自产| 欧美日韩在线播一区二区三区 | 在线欧美日韩| 成人国产在线看不卡| 久爱www人成免费网站| 久爱免费观看在线精品| 无码不卡av毛片| www日韩| 国产情侣真实露脸在线| 国产在线麻豆波多野结衣| 国产一区二区不卡免费观在线| 国产精品久久久久影院| 午夜影院福利社| 欧美乱妇狂野欧美在线视频| 午夜精品久久久久久久2023| 国内偷窥一区二区三区视频| 亚洲熟女国产熟女二区三区| 久久免费看少妇免费观看| 国产xxxx| 欧美日韩激情在线一区| 婷婷色婷婷开心五月四房播播| 男女一级毛片免费视频看| 美女一级毛片免费观看97 | 中文字幕理伦午夜福利片| 国产人碰人摸人爱视频| 免费无码又爽又刺激网站| 国产AV无码一区精品天堂| 老司机午夜福利视频| 色色五月丁香| 深夜视频18| 亚洲国产综合专区在线播放| 国内精品伊人久久久久影院对白| 啪啪导航| 自拍偷拍99| 国产亚洲自在精品一区| 成人福利社| 被公侵犯的漂亮人妻中文字幕| 青青久草| 精品人妻一区二区三区中文久久| 尤物爽到高潮潮喷视频大全| 广昌县|