設計模式-行為型模式-責任鏈模式
將請求沿著鏈傳遞,然後直到物件處理即可。
**邏輯如上,只處理1,2,3情況,其餘的情況都不處理。
// 物件
public class level
public boolean above(level level)
}// 將物件進行封裝
public class request
public level getlevel()
}// 返回訊息
public class response{}
public abstract class handlerelseelse
}return response;
}// 設定下乙個處理器
public void setnexthandler(handler handler)
// 當預處理器
protected abstract level gethandlerlvel();
// 進入處理器處理
public abstract response response(request request);
}// 第乙個處理器
public class concretehandler1 extends handler
public response response(request request)
}// 第二個處理器
public class concretehandler2 extends handler
public response response(request request)
}// 第三個處理器
public class concretehandler3 extends handler
public response response(request request)
}// 最後定義場景
public class client
}
責任鏈模式核心在處理流,讓物件在類之間流動,直到合適進行物件處理,並把下乙個設定為空。
寫法,當然就是新建幾個處理器類,然後要處理的物件,處理類之間用next指向下乙個,然後把處理的物件傳入進去,如果找到合適的處理器,進行處理,並將下乙個設定為空,完成責任鏈。
其中,幾個處理器類可以抽象出乙個抽象類,並把物件進行封裝成乙個類,以上為上方**的設計思路。
開發乙個電商**,支付過500元定金的使用者,收到100元優惠卷,200元收到50元,沒有支付過的,進入普通模式購買。
如果不用職責鏈,需要寫入一大堆if語句。
將if語句拆分,使用職責鏈,將處理器類抽象出來,然後將購買的使用者傳入處理器,然後如果處理完成,下乙個設定為空,返回結果。
另外乙個應用,檔案上傳,使用的也是職責鏈。
設計模式 行為型模式,責任鏈模式(10)
顧名思義,責任鏈模式 chain of responsibility pattern 為請求建立了乙個接收者物件的鏈。這種模式給予請求的型別,對請求的傳送者和接收者進行解耦。這種型別的設計模式屬於行為型模式。在這種模式中,通常每個接收者都包含對另乙個接收者的引用。如果乙個物件不能處理該請求,那麼它會...
行為型模式(一) 責任鏈模式
責任鏈 chain of responsibility 模式 為了避免請求傳送者與多個請求處理者耦合在一起,將所有請求的處理者通過前一物件記住其下乙個物件的引用而連成一條鏈 當有請求發生時,可將請求沿著這條鏈傳遞,直到有物件處理它為止。注意 責任鏈模式也叫職責鏈模式。在責任鏈模式中,客戶只需要將請求...
行為型模式之責任鏈模式
目錄應用場景 擴充套件 純 不純的職責鏈模式 在現實生活中,常常會出現這樣的事例 乙個請求有多個物件可以處理,但每個物件的處理條件或許可權不同,如找領導出差報銷等。在計算機軟硬體中也有相關例子,如匯流排網中資料報傳送 異常處理。所有這些,如果用責任鏈模式都能很好解決。責任鏈 chain of res...