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

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

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

    隨筆-95  評論-31  文章-10  trackbacks-0
    /**
     * 
    @author LX
     * 通用Reveiver類
     
    */

    public abstract class Receiver {
        
        
    //抽象接收者,定義每個接收者必須完成的業務 
        public abstract void doSomething();
        
    //撤銷
        public abstract void undo();
    }

    /**
     *抽象Command類
     *
    */

    public abstract class Command {
        
        
    public abstract void execute();
        
    public abstract void undo();
    }

    /**
     *調用者類
     *
    */

    public class Invoker {
         
        
    private Command command;
        
        
    public void setCommand(Command command){
            
    this.command=command;
        }

        
        
    public void action(){
            
    this.command.execute();
        }

    }

    /**
     *具體接收者
     *
    */

    public class ConcreteReceiver1 extends Receiver {

        @Override
        
    public void doSomething() {
        }


        @Override
        
    public void undo() {
            
        }

    }

    /**
     *具體Command類
     *
    */

    public class ConcreteCommand1 extends Command {
        
        
    private Receiver receiver;
        
    public ConcreteCommand1(Receiver receiver){
            
    this.receiver=receiver;
        }

        
        @Override
        
    public void execute() {
            receiver.doSomething();
        }


        @Override
        
    public void undo() {
            receiver.undo();
        }

    }

    /**
     *測試類
     *
    */

    public class Test {
        
        
    public static void main(String[] args) {
            Invoker invoker 
    = new Invoker();
            Receiver receiver 
    = new ConcreteReceiver1(); //定義接收者
            Command command = new ConcreteCommand1(receiver);//定義一個發送給接收者的命令
            invoker.setCommand(command);//把命令交給調用者去執行
            invoker.action();
        }

    }
    //更完美的Command類
    public abstract class Command {
        
    //定義一個子類的全局共享變量
        protected final Receiver receiver;
        
    //實現類必須定義一個接收者
        public Command(Receiver receiver){
            
    this.receiver=receiver;
        }

        
    //每個命令類都必須有一個執行命令的方法
        public abstract void execute();
    }

    public class ConcreteCommand1 extends Command{
        
        
    //設置自己的默認構造
        public ConcreteCommand1(){
            
    super(new ConcreteReceiver1());
        }

        
    //設置新的接收者
        public ConcreteCommand1(Receiver receiver) {
            
    super(receiver);
        }

        
    //業務處理
        @Override
        
    public void execute() {
            
    super.receiver.doSomething();
        }

    }

    public class Test {
        
    public static void main(String[] args) {
            Invoker invoker 
    = new Invoker();
            Command command 
    = new ConcreteCommand1(); //無需知道具體接收者
            invoker.setCommand(command);
            invoker.action();
        }

    }
    posted on 2010-09-06 23:42 朔望魔刃 閱讀(265) 評論(0)  編輯  收藏 所屬分類: 設計模式&&數據結構
    主站蜘蛛池模板: 免费看黄的成人APP| 国产成人综合亚洲绿色| 亚洲AV无码无限在线观看不卡| 亚洲综合精品成人| 男人和女人高潮免费网站| 三上悠亚在线观看免费| 中文字幕免费视频| 四虎永久在线精品免费网址| 国产成人免费a在线资源| 亚洲综合日韩久久成人AV| 亚洲精品影院久久久久久| 亚洲AV无码一区二区一二区| 一区二区3区免费视频| 99re在线视频免费观看| 精品剧情v国产在免费线观看 | 亚州免费一级毛片| 小小影视日本动漫观看免费| 在线亚洲午夜理论AV大片| 亚洲欧洲国产成人精品| 在线精品自拍亚洲第一区| 永久免费AV无码网站国产| 成人奭片免费观看| 日韩一卡2卡3卡4卡新区亚洲| 中文字幕亚洲第一在线| 色多多免费视频观看区一区| 亚洲一区二区在线免费观看| 精品久久久久久久免费人妻| 国产亚洲欧洲精品| 亚洲精品无码av中文字幕| 两个人看的www免费高清| 欧洲黑大粗无码免费| 国产精品亚洲综合一区| 亚洲av无码久久忘忧草| 久久国产精品免费一区| 丁香花在线观看免费观看 | 亚洲一区二区精品视频| 亚洲午夜电影在线观看| 国产福利免费视频| 免费看AV毛片一区二区三区| 亚洲AV日韩AV天堂一区二区三区| 亚洲AV无码成人精品区狼人影院 |