<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 操作復雜對象結構——訪問者模式(四) 26.4 訪問者模式與組合模式聯用 在訪問者模式中,包含一個用于存儲元素對象集合的對象結構,我們通常可以使用迭代器來遍歷對象結構,同時具體元素之間可以存在整體與部分關系,有些元素作為容器對象,有些元素作為成員對象,可以使用組合模式來組織元素。引入組合模式后的訪問者模式結構圖如圖26-4所示: ![](http://my.csdn.net/uploads/201204/06/1333715011_8778.gif) 需要注意的是,在圖26-4所示結構中,由于葉子元素的遍歷操作已經在容器元素中完成,因此要防止單獨將已增加到容器元素中的葉子元素再次加入對象結構中,對象結構中只保存容器元素和孤立的葉子元素。 26.5 訪問者模式總結 由于訪問者模式的使用條件較為苛刻,本身結構也較為復雜,因此在實際應用中使用頻率不是特別高。當系統中存在一個較為復雜的對象結構,且不同訪問者對其所采取的操作也不相同時,可以考慮使用訪問者模式進行設計。在XML文檔解析、編譯器的設計、復雜集合對象的處理等領域訪問者模式得到了一定的應用。 1.主要優點 訪問者模式的主要優點如下: (1) 增加新的訪問操作很方便。使用訪問者模式,增加新的訪問操作就意味著增加一個新的具體訪問者類,實現簡單,無須修改源代碼,符合“開閉原則”。 (2) 將有關元素對象的訪問行為集中到一個訪問者對象中,而不是分散在一個個的元素類中。類的職責更加清晰,有利于對象結構中元素對象的復用,相同的對象結構可以供多個不同的訪問者訪問。 (3) 讓用戶能夠在不修改現有元素類層次結構的情況下,定義作用于該層次結構的操作。 2.主要缺點 訪問者模式的主要缺點如下: (1) 增加新的元素類很困難。在訪問者模式中,每增加一個新的元素類都意味著要在抽象訪問者角色中增加一個新的抽象操作,并在每一個具體訪問者類中增加相應的具體操作,這違背了“開閉原則”的要求。 (2) 破壞封裝。訪問者模式要求訪問者對象訪問并調用每一個元素對象的操作,這意味著元素對象有時候必須暴露一些自己的內部操作和內部狀態,否則無法供訪問者訪問。 3.適用場景 在以下情況下可以考慮使用訪問者模式: (1) 一個對象結構包含多個類型的對象,希望對這些對象實施一些依賴其具體類型的操作。在訪問者中針對每一種具體的類型都提供了一個訪問操作,不同類型的對象可以有不同的訪問操作。 (2) 需要對一個對象結構中的對象進行很多不同的并且不相關的操作,而需要避免讓這些操作“污染”這些對象的類,也不希望在增加新操作時修改這些類。訪問者模式使得我們可以將相關的訪問操作集中起來定義在訪問者類中,對象結構可以被多個不同的訪問者類所使用,將對象本身與對象的訪問操作分離。 (3) 對象結構中對象對應的類很少改變,但經常需要在此對象結構上定義新的操作。 練習 > Sunny軟件公司欲為某高校開發一套獎勵審批系統,該系統可以實現教師獎勵和學生獎勵的審批(Award Check),如果教師發表論文數超過10篇或者學生論文超過2篇可以評選科研獎,如果教師教學反饋分大于等于90分或者學生平均成績大于等于90分可以評選成績優秀獎。試使用訪問者模式設計該系統,以判斷候選人集合中的教師或學生是否符合某種獲獎要求。
                  <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>

                              哎呀哎呀视频在线观看