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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                命令模式(Command):將“請求”(命令/口令)封裝成一個對象,以便使用不同的請求、隊列或者日志來參數化其對象。命令模式也支持撤銷操作。命令模式的目的就是達到命令的發出者和執行者之間解耦,實現請求和執行分開。 ##一、uml建模 ![](https://box.kancloud.cn/2016-02-19_56c7196d7c876.jpg) ##二、代碼實現: ~~~ /** * 示例:以咱去餐館吃飯為例,分為3步 * * 1、和小二說,來個宮保雞丁 --> 顧客發出口令 * * 2、小二來了一句:宮保雞丁一份。 這時命令被傳遞到了廚師。--> 口令傳遞到了廚師 * * 3、然后廚師就開始做宮保雞丁去了。 --> 廚師根據口令去執行 * * 從這3步可以看到,宮保雞丁并不是我想吃就我來做,而是傳達給別人去做。 * * 我要的是一個結果——宮保雞丁這道菜做好了,而我無需去關系這道菜是怎么去做的。 */ interface Command { /** * 口令執行 */ public void execute(); /** * 口令撤銷 */ public void undo(); } /** * 口令 -- 經小二傳遞 */ class OrderCommand implements Command { private CookReceiver cook; public OrderCommand(CookReceiver cook) { this.cook = cook; } @Override public void execute() { cook.cooking(); } @Override public void undo() { cook.unCooking(); } } /** * 廚師--真正的口令執行者 */ class CookReceiver { public void cooking() { System.out.println("開始炒宮保雞丁了..."); } public void unCooking() { System.out.println("不要炒宮保雞丁了..."); } } /** * 顧客--真正的口令發出者 */ class Customer { private Command command; public Customer(Command command) { this.command = command; } /** * 將命令的發出與執行分開 */ public void order() { command.execute(); } public void unOrder() { command.undo(); } } /** * 客戶端測試類 * * @author Leo */ public class Test { public static void main(String[] args) { /** * 等待口令的執行者 --炒菜總得有個廚師吧. */ CookReceiver receiver = new CookReceiver(); /** * 等待將口令傳達給廚師 --因為顧客要什么菜還不知道,但口令始終要傳達到廚師耳朵里這是肯定的。 */ Command cmd = new OrderCommand(receiver); Customer customer = new Customer(cmd); /** * 執行口令 */ customer.order(); /** * 撤銷口令 */ customer.unOrder(); } } ~~~ ##三、應用場景 菜館點餐、遙控器、隊列請求、日志請求。 ##四:小結 從上面的示例可以看到:命令模式將“動作的請求者”從“動作的執行者”對象中解耦出來,這就是將方法的調用封裝起來的好處。
                  <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>

                              哎呀哎呀视频在线观看