<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 對象間的聯動——觀察者模式(一) 觀察者模式是設計模式中的“超級模式”,其應用隨處可見,在之后幾篇文章里,我將向大家詳細介紹觀察者模式。 “紅燈停,綠燈行”,在日常生活中,交通信號燈裝點著我們的城市,指揮著日益擁擠的城市交通。當紅燈亮起,來往的汽車將停止;而綠燈亮起,汽車可以繼續前行。在這個過程中,交通信號燈是汽車(更準確地說應該是汽車駕駛員)的觀察目標,而汽車是觀察者。隨著交通信號燈的變化,汽車的行為也將隨之而變化,一盞交通信號燈可以指揮多輛汽車。如圖22-1所示: ![](http://my.csdn.net/uploads/201207/05/1341499237_8810.jpg) 圖22-1 交通信號燈與汽車示意圖 【插曲:本圖是根據網絡上一張圖PS的,但改為黑白圖片之后我把那張彩色的原始圖片刪除了,后悔ing...,怎么根據黑白圖片查詢彩色圖片啊,這樣的工具,有木有!!那張彩色的原圖很漂亮,有木有人能夠幫我找一找,大哭】 在軟件系統中,有些對象之間也存在類似交通信號燈和汽車之間的關系,一個對象的狀態或行為的變化將導致其他對象的狀態或行為也發生改變,它們之間將產生聯動,正所謂“觸一而牽百發”。為了更好地描述對象之間存在的這種一對多(包括一對一)的聯動,觀察者模式應運而生,它定義了對象之間一種一對多的依賴關系,讓一個對象的改變能夠影響其他對象。本章我們將學習用于實現對象間聯動的觀察者模式。 22.1 多人聯機對戰游戲的設計 Sunny軟件公司欲開發一款多人聯機對戰游戲(類似魔獸世界、星際爭霸等游戲),在該游戲中,多個玩家可以加入同一戰隊組成聯盟,當戰隊中某一成員受到敵人攻擊時將給所有其他盟友發送通知,盟友收到通知后將作出響應。 Sunny軟件公司開發人員需要提供一個設計方案來實現戰隊成員之間的聯動。 Sunny軟件公司開發人員通過對系統功能需求進行分析,發現在該系統中戰隊成員之間的聯動過程可以簡單描述如下: 聯盟成員受到攻擊-->發送通知給盟友-->盟友作出響應。 如果按照上述思路來設計系統,由于聯盟成員在受到攻擊時需要通知他的每一個盟友,因此每個聯盟成員都需要持有其他所有盟友的信息,這將導致系統開銷較大,因此Sunny公司開發人員決定引入一個新的角色——“戰隊控制中心”——來負責維護和管理每個戰隊所有成員的信息。當一個聯盟成員受到攻擊時,將向相應的戰隊控制中心發送求助信息,戰隊控制中心再逐一通知每個盟友,盟友再作出響應,如圖22-2所示: ![](http://my.csdn.net/uploads/201207/05/1341499243_2401.jpg) 圖22-2 多人聯機對戰游戲中對象的聯動 在圖22-2中,受攻擊的聯盟成員將與戰隊控制中心產生聯動,戰隊控制中心還將與其他盟友產生聯動。 如何實現對象之間的聯動?如何讓一個對象的狀態或行為改變時,依賴于它的對象能夠得到通知并進行相應的處理? 別著急,本章所介紹的觀察者模式將為對象之間的聯動提供一個優秀的解決方案,下面就讓我們正式進入觀察者模式的學習。
                  <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>

                              哎呀哎呀视频在线观看