java設計模式之職責鏈模式


責任鏈模式

  設計模式很多時候都是看見名字都知道意思,責任鏈,見名知義為請求創建一系列處理對象。 此模式基於請求的類型將請求的發送方和接收方分離。通常每個接收器包含對另一個接收器的引用。如果一個對象不能處理請求,則它將相同的對象傳遞給下一個接收者,這樣形成一條鏈。這種模式屬於行為模式。基於這種情況,我寫了一個字符串判斷是否為null或者""的責任鏈,先去判斷null、判斷不出來在判斷"",這樣就形成一條鏈。簡單簡潔粗暴

責任鏈模式UML圖

責任鏈模式代碼

package com.roc.responsibility;
/**
 * 判斷是否為空的抽象類
 * @author liaowp
 *
 */
public abstract class IsEmptyAbstract {

    protected IsEmptyAbstract isEmptyAbstract;
    
    public void setIsEmptyAbstract(IsEmptyAbstract isEmptyAbstract) {
        this.isEmptyAbstract = isEmptyAbstract;
    }
    
    public boolean  inputMsg(String str){
          if(isEmpty(str)){//
              return true;
          }else{//如果沒有判斷出來就傳入下一個
              if(isEmptyAbstract !=null){
                  return isEmptyAbstract.isEmpty(str);
               }else{
                   System.out.println("判斷器沒有初始化");
                   return false;
               }
          }
    }

    /**
     * 判斷是否為空
     * @return
     */
    abstract protected boolean isEmpty(String str);
}
package com.roc.responsibility;
/**
 * 判斷是不是null
 * @author liaowp
 *
 */
public class isNull extends IsEmptyAbstract{

    @Override
    protected boolean isEmpty(String str) {
        return null==str;
    }

}
package com.roc.responsibility;
/**
 * 判斷是不是""
 * @author liaowp
 *
 */
public class IsEmpty extends IsEmptyAbstract{

    @Override
    protected boolean isEmpty(String str) {
        return "".equals(str);
    }
}
package com.roc.responsibility;
/**
 * 責任鏈模式
 * @author liaowp
 *
 */
public class Client {
    
    public static void main(String[] args) {
        String str = "";
        isNull isNull = new isNull();
        IsEmpty isEmpty = new IsEmpty();
        isNull.setIsEmptyAbstract(isEmpty);
        System.out.println(isNull.inputMsg(str));
    }
}

責任鏈模式適用場景

1、有多個對象共同對一個任務進行處理。

2、這些對象使用鏈式存儲結構,形成一個鏈,每個對象知道自己的下一個對象。

3、一個對象對任務進行處理,可以添加一些操作后將對象傳遞個下一個任務。也可以在此對象上結束任務的處理,並結束任務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM