隨筆-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 朔望魔刃 閱讀(269) 評論(0)  編輯  收藏 所屬分類: 設計模式&&數據結構
          主站蜘蛛池模板: 宁都县| 信丰县| 禹城市| 泸西县| 南漳县| 溆浦县| 读书| 阿荣旗| 乐清市| 泗水县| 湟源县| 贡嘎县| 盐山县| 五大连池市| 清苑县| 辽宁省| 巴林左旗| 锡林郭勒盟| 镇江市| 赤峰市| 北安市| 镇宁| 毕节市| 江川县| 方城县| 平山县| 比如县| 光泽县| 横山县| 桃源县| 乌苏市| 兖州市| 新民市| 临朐县| 砚山县| 称多县| 郑州市| 万盛区| 本溪市| 额尔古纳市| 通江县|