隨筆-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)  編輯  收藏 所屬分類: 設計模式&&數據結構
          主站蜘蛛池模板: 探索| 屯留县| 凤城市| 长治县| 西丰县| 夹江县| 贵德县| 九台市| 东平县| 崇阳县| 简阳市| 浦北县| 重庆市| 海南省| 新蔡县| 明溪县| 珲春市| 且末县| 花垣县| 鄂伦春自治旗| 北海市| 宁津县| 金平| 莱州市| 棋牌| 石城县| 阜平县| 新丰县| 乌审旗| 江源县| 博兴县| 虞城县| 天等县| 沈丘县| 双柏县| 女性| 弥勒县| 宜兰县| 米泉市| 呈贡县| 丰顺县|