隨筆-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 朔望魔刃 閱讀(267) 評論(0)  編輯  收藏 所屬分類: 設計模式&&數據結構
          主站蜘蛛池模板: 德保县| 来安县| 苍山县| 沙洋县| 香河县| 互助| 淮安市| 诸暨市| 凤城市| 阿图什市| 综艺| 兰西县| 长海县| 沧源| 都江堰市| 新丰县| 苗栗县| 安仁县| 永和县| 舞钢市| 旬阳县| 安顺市| 阿鲁科尔沁旗| 中宁县| 清河县| 丹阳市| 永顺县| 施秉县| 科技| 铁力市| 河源市| 和政县| 靖远县| 高雄县| 深泽县| 文昌市| 桃源县| 明光市| 无锡市| 西畴县| 马关县|