隨筆-20  評論-2  文章-0  trackbacks-0

          [關(guān)鍵字]:java,design pattern,設(shè)計模式,《Java與模式》,Chain of Responsibility,責(zé)任鏈模式
          [環(huán)境]:StarUML5.0 + JDK6
          [作者]:Winty (wintys@gmail.com)
          [正文]:

          package pattern.chainofresponsibility;

          /**
           * 責(zé)任鏈模式:Chain of Responsibility
           * @version 2009-5-9
           * @author Winty(wintys@gmail.com)
           */
          public class ChainOfResponsibilityTest{
              public static void main(String[] args){
                  Handler handler1 = new ConcreteHandler1();
                  Handler handler2 = new ConcreteHandler2();
                  Handler handler3 = new ConcreteHandler3();

                  //設(shè)置責(zé)任鏈
                  handler3.setSuccessor(handler2);
                  handler2.setSuccessor(handler1);

                  //發(fā)送命令
                  handler3.handleRequest();
              }
          }

          /**
           *抽象處理者
           */
          abstract class Handler{
              protected Handler successor;

              public Handler getSuccessor(){
                  return successor;
              }

              public void setSuccessor(Handler successor){
                  this.successor = successor;
              }

              public abstract void handleRequest();
          }

          /**
           *具體處理者
           */
          class ConcreteHandler1 extends Handler{
              public void handleRequest(){
                  if(getSuccessor() != null){
                      System.out.print("Request passed:from class Concrete1");
                      System.out.println(" to class" + getSuccessor().getClass().getName());

                      getSuccessor().handleRequest();
                  }
                  else{
                      System.out.println("Request handled in ConcreteHandler1");
                  }
              }
          }

          /**
           *具體處理者
           */
          class ConcreteHandler2  extends Handler{
              public void handleRequest(){
                  if(getSuccessor() != null){
                      System.out.print("Request passed:from class Concrete2");
                      System.out.println(" to class " + getSuccessor().getClass().getName());

                      getSuccessor().handleRequest();
                  }
                  else{
                      System.out.println("Request handled in ConcreteHandler2");
                  }
              }
          }

          /**
           *具體處理者
           */
          class ConcreteHandler3  extends Handler{
              public void handleRequest(){
                  if(getSuccessor() != null){
                      System.out.print("Request passed:from class Concrete3");
                      System.out.println(" to class " + getSuccessor().getClass().getName());

                      getSuccessor().handleRequest();
                  }
                  else{
                      System.out.println("Request handled in ConcreteHandler3");
                  }
              }
          }

          文章來源:http://blog.163.com/ccbobo_cat/blog/static/320994622009410264843
          posted on 2009-05-10 14:07 C.B.K 閱讀(90) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 抚松县| 司法| 石渠县| 特克斯县| 山西省| 小金县| 南康市| 东光县| 阜新| 峨山| 蒙城县| 龙门县| 攀枝花市| 嘉峪关市| 根河市| 潼南县| 毕节市| 监利县| 武陟县| 将乐县| 集安市| 吴堡县| 团风县| 靖宇县| 汶川县| 信丰县| 同心县| 自治县| 滨海县| 天柱县| 邢台县| 江门市| 赣州市| 吴川市| 城步| 贵德县| 通榆县| 天镇县| 金坛市| 从化市| 仁寿县|