<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 37  文章 - 29  trackbacks - 0


    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    最新評論

    閱讀排行榜

    評論排行榜

    14、COMMAND—俺有一個MM家里管得特別嚴,沒法見面,只好借助于她弟弟在我們倆之間傳送信息,她對我有什么指示,就寫一張紙條讓她弟弟帶給我。
    這不,她弟弟又傳送過來一個COMMAND,為了感謝他,我請他吃了碗雜醬面,哪知道他說:"我同時給我姐姐三個男朋友送COMMAND,就數你最小氣,才請我吃面。",:-(

    命令模式:命令模式把一個請求或者操作封裝到一個對象中。命令模式把發出命令的責任和執行命令的責任分割開,委派給不同的對象。
    命令模式允許請求的一方和發送的一方獨立開來,使得請求的一方不必知道接收請求的一方的接口,更不必知道請求是怎么被接收,以及操作是否執行,
    何時被執行以及是怎么被執行的。系統支持命令的撤消。

     

     



    典型的Command模式需要有一個接口.接口中有一個統一的方法,這就是"將命令/請求封裝為對象":
    public interface Command {
        public abstract void execute ( );
    }


    《Java與模式》一書中的例子如下:
    /**
     * 客戶端(Client)代碼
     */
    public class Client {
        public static void main(String[] args) {
            Receiver receiver = new Receiver();
            Command command = new ConcreteCommand(receiver);
            Invoker invoker = new Invoker(command);
            invoker.action();
        }
    }
    /**
     * 請求者(Invoker)角色代碼
     */
    public class Invoker {
        private Command command;
        public Invoker(Command command) {
            this.command = command;
        }
        public void action() {
            command.execute();
        }
    }
    /**
     * 接收者(Receiver)角色代碼
     */
    public class Receiver {
        public Receiver() {
            //write code here
        }
        public void action() {
            System.out.println(""Action has been taken);
        }
    }
    /**
     * 抽象命令角色由Command接口扮演
     */
    public class Command {
        void execute();
    }
    /**
     * 具體命令類
     */
    public class ConcreteCommand implements Command {
        private Receiver receiver;
        public ConcreteCommand(Receiver receiver) {
            this.receiver = receiver;
        }
        public void execute() {
            receiver.action();
        }
    }


    再用某公司寫的Command模式,簡化代碼寫個大概樣子:
    /**
     * 客戶端(Client)代碼
     */
    public class Client {
        public static void main(String[] args) {
            String receiverName = "xAO";
            String methodName = "methodA";
            
            //receiverName這里用Spring的依賴注入來創建Receiver對象
            Command command = new ConcreteCommand(receiverName);
            command.getParameters.put("method", methodName);   //實際代碼做了封裝,并不是這樣直接寫的。這里簡化一下
            command.getParameters.put("param1", "param1"); //傳遞參數
            command.getParameters.put("param2", "param2");
            
            Result result = getNewInvoker.execute(command); //創建Invoker對象,并調用receiver執行最終的方法
        }
    }
    /**
     * 請求者(Invoker)角色代碼
     */
    public class Invoker {
        private Command command;
        public Invoker(Command command) {
            this.command = command;
        }
        public void action() {
            command.execute();
        }
        
        private BeanFactoryService  beanFactory;
        
        public Result execute(Command command) {
            ApplicationObject ao = beanFactory.getBean(command.getName(), ApplicationObject.class, new XXProcessor(command));
            return ao.execute();  //這里就是接收者Receiver來執行具體方法:
    xAO.methodA();
        }
    }

    /**
     * 抽象命令角色由Command接口扮演
     */
    public class Command {
        //...
        //沒有execute()方法
    }
    /**
     * 具體命令類
     */
    public class ConcreteCommand implements Command {
        //也沒有execute()方法
        //...
    }




    posted on 2008-01-24 16:45 EvanLiu 閱讀(5544) 評論(0)  編輯  收藏 所屬分類: 設計模式

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 99视频在线精品免费观看6| 免费h黄肉动漫在线观看| 亚洲成a人片在线观看无码| 亚洲一区二区中文| 久久99精品国产免费观看| 亚洲乱码国产乱码精品精| 中文在线观看永久免费| 亚洲成a人片在线观看无码| 无码人妻精品中文字幕免费| 久久久亚洲欧洲日产国码是AV | 亚洲一区精品视频在线| 国产免费毛不卡片| 亚洲韩国精品无码一区二区三区 | 精品一区二区三区免费毛片| 日韩高清免费在线观看| 黄网站在线播放视频免费观看| 五月婷婷亚洲综合| GOGOGO免费观看国语| 亚洲视频2020| 最新仑乱免费视频| 免费大片av手机看片高清| 亚洲热妇无码AV在线播放| 国产精品亚洲天堂| 伊人久久大香线蕉亚洲| 在线视频亚洲一区| 亚洲色婷婷六月亚洲婷婷6月| 日韩免费人妻AV无码专区蜜桃| 亚洲一区电影在线观看| 男人的天堂亚洲一区二区三区 | 亚洲一区AV无码少妇电影| 8x成人永久免费视频| 国产亚洲精AA在线观看SEE| 久久国产乱子伦免费精品| 亚洲va精品中文字幕| 亚洲国产人成中文幕一级二级| 在线亚洲高清揄拍自拍一品区| 全部免费国产潢色一级| 高清一区二区三区免费视频| 在线日韩日本国产亚洲| 国产成人免费午夜在线观看| 草久免费在线观看网站|