<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] >[success] # 什么是代理模式 (菜鳥教程中代理模式總結) ~~~ 1.定義在代理模式(Proxy Pattern)中,'一個類代表另一個類的功能', '為其他對象提供一種代理以控制對這個對象的訪問' 2.代理模式由兩部分構成:當一個類不方便直接訪問或者不滿足需求的時候, 需要提供一個替身對象來控制這個對象的訪問,替身對象作出一些處理之后 ,在把請求轉交給本體對象。'第一部分本體對象','第二部分是替身對象', '替身對象的主要作用是作出一些處理,當處理合適的部分在交給實體對象處理' 3.主要解決:在直接訪問對象時帶來的問題,比如說:要訪問的對象在遠程的機器上。 在面向對象系統中,有些對象由于某些原因(比如對象創建開銷很大,或者某些操作需要安全控制, 或者需要進程外的訪問),直接訪問會給使用者或者系統結構帶來很多麻煩,我們可以在訪問此對 象時加上一個對此對象的訪問層。 何時使用:想在訪問一個類時做一些控制。 如何解決:增加中間層(指的就是替身對象)。 ~~~ >[danger] ##### 優缺點 * 優點 ~~~ 1、職責清晰。 2、高擴展性。 3、智能化。 ~~~ * 缺點 ~~~ 1、由于在客戶端和真實主題之間增加了代理對象,因此有些類型的代理模式可能會造成請求的 處理速度變慢。 2、實現代理模式需要額外的工作,有些代理模式的實現非常復雜。 ~~~ >[success] # 前端的代理模式 ~~~ 1簡單的來講本地對象注重的去執行,頁面上的代碼,代理則控制本地對象何時被實例化,何時被使用 '通俗講想訪問一個類,需要通過另一個類來間接訪問 ' 2.引用書中的解釋:'代理模式是為一個對象提供一個代用品或占位符,以便控制對它的訪問。' ~~~ >[info] ## 舉個書中例子 -- 追對象 ~~~ 1.書中舉個了小明追對象的故事來形容代理模式,簡單的講,一般我們如果去跟另一個人表白,無非兩種 情況,第一中自己上直接開口表白,第二種找個兩方的熟人讓其幫忙'牽線搭橋'(這個人就是代理) ~~~ >[danger] 不用代理直接上去表白的代碼 ~~~ var Flower = function () {} var xiaoming = { sendFlower:function (target) { var flower = new Flower() // 表白給目標對象送花 target.receiveFlower(flower) } } var nvshen = { receiveFlower:function (flower) { console.log(flower) } } xiaoming.sendFlower(nvshen) ~~~ >[danger] 直接上失敗了,我要找人幫忙 ~~~ 1.熟人幫忙給花 順序就是 : 你把花給 =》 你的朋友(你的朋友有個接受花的動作)=》你的朋友在把花給女神(女神有個接花的動作) 2.根據上面的代理模式構成:'第一部分本體對象','第二部分是替身對象', '替身對象的主要作用是作出一些處理,當處理合適的部分在交給實體對象處理' 代理模式定義:'一個類代表另一個類的功能','為其他對象提供一種代理以控制對這個對象的訪問' 2.1.根據構成來分析下面代碼: 下面代碼針對上面說的第一部分是'女神也就是對象本體',第二部分'共同的對象也就是替身' ,'共同的朋友在合適的情況下把花給了女神'。 2.2.根據定義來分析: '女神和共同的朋友都有收花的功能,朋友這個對象帶表女神這個對象收花,在通過某種方式把花給女神' 通俗的講女神和朋友都有'receiveFlower'方法,我調用朋友的讓朋友的方法調用女神的 ~~~ ~~~ var Flower = function () {} var xiaoming = { sendFlower:function (target) { var flower = new Flower() // 表白給目標對象送花 target.receiveFlower(flower) } } // 共同的朋友 var mutualFriend = { receiveFlower:function (flower) { // 直接把小明給的花,轉手給女神 nvshen.receiveFlower(flower) } } // 本體 var nvshen = { receiveFlower:function (flower) { console.log(flower) } } xiaoming.sendFlower(mutualFriend) ~~~ >[danger] ##### 為了讓追到女神的成功率提高 ~~~ 1.你的好朋友為了讓你更加容易的追到女神,他每天觀察女神心情好壞,有一天 發現女神心情特別好,你的朋友把你把花給你的女神,哇恭喜你和女神在一起了 2.下面的例子可以看出代理不僅僅向之前隔手傳遞的感覺,他可以幫監聽本體 在特定的時候傳遞給本體嗎,這只是代理其中一個點后續會詳細講更多代理應用, 現在需要有個印象 ~~~ ~~~ var Flower = function(){}; var xiaoming = { sendFlower: function( target){ var flower = new Flower(); target.receiveFlower( flower ); } }; var B = { receiveFlower: function( flower ){ A.listenGoodMood(function(){ A.receiveFlower( flower ); }); } }; var A = { receiveFlower: function( flower ){ // 監聽 A 的好心情 console.log( '收到花 ' + flower ); }, listenGoodMood: function( fn ){ setTimeout(function(){ // 假設 10 秒之后 A 的心情變好 fn(); }, 10000 ); } }; xiaoming.sendFlower( B ); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看