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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 請求發送者與接收者解耦——命令模式(六) 7 宏命令 宏命令(Macro Command)又稱為組合命令,它是組合模式和命令模式聯用的產物。宏命令是一個具體命令類,它擁有一個集合屬性,在該集合中包含了對其他命令對象的引用。通常宏命令不直接與請求接收者交互,而是通過它的成員來調用接收者的方法。當調用宏命令的execute()方法時,將遞歸調用它所包含的每個成員命令的execute()方法,一個宏命令的成員可以是簡單命令,還可以繼續是宏命令。執行一個宏命令將觸發多個具體命令的執行,從而實現對命令的批處理,其結構如圖7所示: ![](http://img.my.csdn.net/uploads/201304/15/1366041322_3439.jpg) 圖7 宏命令結構圖 8 命令模式總結 命令模式是一種使用頻率非常高的設計模式,它可以將請求發送者與接收者解耦,請求發送者通過命令對象來間接引用請求接收者,使得系統具有更好的靈活性和可擴展性。在基于GUI的軟件開發,無論是在電腦桌面應用還是在移動應用中,命令模式都得到了廣泛的應用。 1. 主要優點 命令模式的主要優點如下: (1) 降低系統的耦合度。由于請求者與接收者之間不存在直接引用,因此請求者與接收者之間實現完全解耦,相同的請求者可以對應不同的接收者,同樣,相同的接收者也可以供不同的請求者使用,兩者之間具有良好的獨立性。 (2) 新的命令可以很容易地加入到系統中。由于增加新的具體命令類不會影響到其他類,因此增加新的具體命令類很容易,無須修改原有系統源代碼,甚至客戶類代碼,滿足“開閉原則”的要求。 (3) 可以比較容易地設計一個命令隊列或宏命令(組合命令)。 (4) 為請求的撤銷(Undo)和恢復(Redo)操作提供了一種設計和實現方案。 2. 主要缺點 命令模式的主要缺點如下: 使用命令模式可能會導致某些系統有過多的具體命令類。因為針對每一個對請求接收者的調用操作都需要設計一個具體命令類,因此在某些系統中可能需要提供大量的具體命令類,這將影響命令模式的使用。 3. 適用場景 在以下情況下可以考慮使用命令模式: (1) 系統需要將請求調用者和請求接收者解耦,使得調用者和接收者不直接交互。請求調用者無須知道接收者的存在,也無須知道接收者是誰,接收者也無須關心何時被調用。 (2) 系統需要在不同的時間指定請求、將請求排隊和執行請求。一個命令對象和請求的初始調用者可以有不同的生命期,換言之,最初的請求發出者可能已經不在了,而命令對象本身仍然是活動的,可以通過該命令對象去調用請求接收者,而無須關心請求調用者的存在性,可以通過請求日志文件等機制來具體實現。 (3) 系統需要支持命令的撤銷(Undo)操作和恢復(Redo)操作。 (4) 系統需要將一組操作組合在一起形成宏命令。 練習 > Sunny軟件公司欲開發一個基于Windows平臺的公告板系統。該系統提供了一個主菜單(Menu),在主菜單中包含了一些菜單項(MenuItem),可以通過Menu類的addMenuItem()方法增加菜單項。菜單項的主要方法是click(),每一個菜單項包含一個抽象命令類,具體命令類包括OpenCommand(打開命令),CreateCommand(新建命令),EditCommand(編輯命令)等,命令類具有一個execute()方法,用于調用公告板系統界面類(BoardScreen)的open()、create()、edit()等方法。試使用命令模式設計該系統,以便降低MenuItem類與BoardScreen類之間的耦合度。
                  <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>

                              哎呀哎呀视频在线观看