<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 撤銷功能的實現——備忘錄模式(五) 21.5 再談備忘錄的封裝 備忘錄是一個很特殊的對象,只有原發器對它擁有控制的權力,負責人只負責管理,而其他類無法訪問到備忘錄,因此我們需要對備忘錄進行封裝。 為了實現對備忘錄對象的封裝,需要對備忘錄的調用進行控制,對于原發器而言,它可以調用備忘錄的所有信息,允許原發器訪問返回到先前狀態所需的所有數據;對于負責人而言,只負責備忘錄的保存并將備忘錄傳遞給其他對象;對于其他對象而言,只需要從負責人處取出備忘錄對象并將原發器對象的狀態恢復,而無須關心備忘錄的保存細節。理想的情況是只允許生成該備忘錄的那個原發器訪問備忘錄的內部狀態。 在實際開發中,原發器與備忘錄之間的關系是非常特殊的,它們要分享信息而不讓其他類知道,實現的方法因編程語言的不同而有所差異,在C++中可以使用friend關鍵字,讓原發器類和備忘錄類成為友元類,互相之間可以訪問對象的一些私有的屬性;在Java語言中可以將原發器類和備忘錄類放在一個包中,讓它們之間滿足默認的包內可見性,也可以將備忘錄類作為原發器類的內部類,使得只有原發器才可以訪問備忘錄中的數據,其他對象都無法使用備忘錄中的數據。 思考 > 如何使用內部類來實現備忘錄模式? 21.6 備忘錄模式總結 備忘錄模式在很多軟件的使用過程中普遍存在,但是在應用軟件開發中,它的使用頻率并不太高,因為現在很多基于窗體和瀏覽器的應用軟件并沒有提供撤銷操作。如果需要為軟件提供撤銷功能,備忘錄模式無疑是一種很好的解決方案。在一些字處理軟件、圖像編輯軟件、數據庫管理系統等軟件中備忘錄模式都得到了很好的應用。 1.主要優點 備忘錄模式的主要優點如下: (1)它提供了一種狀態恢復的實現機制,使得用戶可以方便地回到一個特定的歷史步驟,當新的狀態無效或者存在問題時,可以使用暫時存儲起來的備忘錄將狀態復原。 (2)備忘錄實現了對信息的封裝,一個備忘錄對象是一種原發器對象狀態的表示,不會被其他代碼所改動。備忘錄保存了原發器的狀態,采用列表、堆棧等集合來存儲備忘錄對象可以實現多次撤銷操作。 2.主要缺點 備忘錄模式的主要缺點如下: 資源消耗過大,如果需要保存的原發器類的成員變量太多,就不可避免需要占用大量的存儲空間,每保存一次對象的狀態都需要消耗一定的系統資源。 3.適用場景 在以下情況下可以考慮使用備忘錄模式: (1)保存一個對象在某一個時刻的全部狀態或部分狀態,這樣以后需要時它能夠恢復到先前的狀態,實現撤銷操作。 (2)防止外界對象破壞一個對象歷史狀態的封裝性,避免將對象歷史狀態的實現細節暴露給外界對象。 練習 > Sunny軟件公司正在開發一款RPG網游,為了給玩家提供更多方便,在游戲過程中可以設置一個恢復點,用于保存當前的游戲場景,如果在后續游戲過程中玩家角色“不幸犧牲”,可以返回到先前保存的場景,從所設恢復點開始重新游戲。試使用備忘錄模式設計該功能。
                  <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>

                              哎呀哎呀视频在线观看