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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## 概述 亦稱:事件訂閱者、監聽者、Event-Subscriber、Listener、Observer **觀察者模式**是一種行為設計模式,允許你定義一種訂閱機制,可在對象事件發生時通知多個“觀察”該對象的其他對象。 ## 觀察者模式結構 ![](https://img.kancloud.cn/2b/f9/2bf9888b9b7694058e68ae2dbb2f34c6_1220x620.png) 1. 發布者 (Publisher) 會向其他對象發送值得關注的事件。 事件會在發布者自身狀態改變或執行特定行為后發生。 發布者中包含一個允許新訂閱者加入和當前訂閱者離開列表的訂閱構架。 2. 當新事件發生時, 發送者會遍歷訂閱列表并調用每個訂閱者對象的通知方法。 該方法是在訂閱者接口中聲明的。 3. 訂閱者 (Subscriber) 接口聲明了通知接口。 在絕大多數情況下, 該接口僅包含一個 update更新方法。 該方法可以擁有多個參數, 使發布者能在更新時傳遞事件的詳細信息。 4. 具體訂閱者 (Concrete Subscribers) 可以執行一些操作來回應發布者的通知。 所有具體訂閱者類都實現了同樣的接口, 因此發布者不需要與具體類相耦合。 5. 客戶端 (Client) 會分別創建發布者和訂閱者對象, 然后為訂閱者注冊發布者更新。 6. 訂閱者通常需要一些上下文信息來正確地處理更新。 因此, 發布者通常會將一些上下文數據作為通知方法的參數進行傳遞。 發布者也可將自身作為參數進行傳遞, 使訂閱者直接獲取所需的數據。 ## 適合應用場景 1. 當一個對象狀態的改變需要改變其他對象,或實際對象是事先未知的或動態變化的時,可使用觀察者模式。 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>

                              哎呀哎呀视频在线观看