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

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

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

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

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

    /**
     *抽象Command類
     *
    */

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

    /**
     *調(diào)用者類
     *
    */

    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);//定義一個(gè)發(fā)送給接收者的命令
            invoker.setCommand(command);//把命令交給調(diào)用者去執(zhí)行
            invoker.action();
        }

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

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

    public class ConcreteCommand1 extends Command{
        
        
    //設(shè)置自己的默認(rèn)構(gòu)造
        public ConcreteCommand1(){
            
    super(new ConcreteReceiver1());
        }

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

        
    //業(yè)務(wù)處理
        @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();
        }

    }
    主站蜘蛛池模板: 国产综合精品久久亚洲| 亚洲AV无码一区二区乱子伦 | 亚洲国产成人久久综合碰碰动漫3d| 亚洲激情电影在线| 特级一级毛片免费看| 7m凹凸精品分类大全免费| 国产极品美女高潮抽搐免费网站| 亚洲国产精品国自产电影| 国产麻豆成人传媒免费观看| 国产一级淫片免费播放电影| 亚洲毛片在线免费观看| 国产va免费精品观看精品| 亚洲AV无码一区二区二三区软件 | 亚洲国产成人久久一区久久| 亚洲国产成人久久99精品| 久久免费99精品国产自在现线| 在线A级毛片无码免费真人| 亚洲国产成人久久综合碰碰动漫3d | 国产美女a做受大片免费| 日韩色日韩视频亚洲网站| 又粗又大又黑又长的免费视频| 亚洲欧洲∨国产一区二区三区| 老子影院午夜伦不卡亚洲| 亚洲精品视频在线观看你懂的| 亚洲欧美aⅴ在线资源| 色老头永久免费网站| 亚洲av日韩av天堂影片精品| free哆拍拍免费永久视频| 免费一级特黄特色大片在线| 色窝窝亚洲AV网在线观看| 不卡一卡二卡三亚洲| 亚洲免费视频播放| 另类小说亚洲色图| 免费真实播放国产乱子伦| 国产午夜精品久久久久免费视| 亚洲a∨无码男人的天堂| 国产精品久久久久免费a∨| 国内成人精品亚洲日本语音| 亚洲AV日韩AV高潮无码专区| 青青青国产免费一夜七次郎| 亚洲AV无码一区二区大桥未久|