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

          public abstract class Receiver {
              
              
          //抽象接收者,定義每個接收者必須完成的業(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);//定義一個發(fā)送給接收者的命令
                  invoker.setCommand(command);//把命令交給調(diào)用者去執(zhí)行
                  invoker.action();
              }

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

              
          //每個命令類都必須有一個執(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();
              }

          }
          posted on 2010-09-06 23:42 朔望魔刃 閱讀(269) 評論(0)  編輯  收藏 所屬分類: 設(shè)計模式&&數(shù)據(jù)結(jié)構(gòu)
          主站蜘蛛池模板: 三穗县| 庆元县| 梁河县| 宜丰县| 呼伦贝尔市| 定州市| 道孚县| 阿勒泰市| 沅江市| 无极县| 城市| 黑山县| 响水县| 石城县| 云和县| 河间市| 包头市| 女性| 洛浦县| 加查县| 郯城县| 准格尔旗| 五寨县| 岫岩| 美姑县| 沁水县| 尉氏县| 兴安盟| 西峡县| 赞皇县| 海宁市| 保靖县| 泸定县| 固原市| 双江| 阳泉市| 大名县| 龙海市| 砀山县| 胶南市| 五大连池市|