<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)  編輯  收藏 所屬分類: 設計模式&&數據結構
    主站蜘蛛池模板: 国产网站在线免费观看| 久久国产精品成人免费| 亚洲视频免费在线播放| 亚洲一线产区二线产区区| 国产成人亚洲午夜电影| 国产婷婷成人久久Av免费高清| 日韩精品成人亚洲专区| 久久久亚洲精品国产| 久久国产免费观看精品| 亚洲国产天堂久久综合网站| 亚洲hairy多毛pics大全| 99在线免费视频| 亚洲国产a∨无码中文777| 亚洲日韩精品A∨片无码加勒比| 免费精品国偷自产在线在线| 亚洲一卡二卡三卡| 成人精品视频99在线观看免费| 精品国产无限资源免费观看| 亚洲婷婷综合色高清在线| 国内免费高清在线观看| 亚洲国产高清视频| 亚洲免费观看网站| 亚洲乱码中文字幕综合| 成人性生交大片免费看好| 免费一级毛片一级毛片aa| 久久免费香蕉视频| 亚洲小视频在线观看| 免费观看黄网站在线播放| 日韩毛片一区视频免费| 免费无遮挡无码视频网站| 亚洲视频一区网站| 免费看的成人yellow视频| 一级特级女人18毛片免费视频| 久久精品亚洲一区二区 | 国产乱子伦精品免费视频| 精品国产亚洲一区二区三区| 久久成人国产精品免费软件| 亚洲国产精品无码久久九九大片| 亚洲精品高清一二区久久| 亚洲av无码一区二区三区人妖| 在线观看日本免费a∨视频|