日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java设计模式—责任链模式

發布時間:2025/5/22 java 148 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java设计模式—责任链模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????

責任鏈模式的定義:

??????? 使多個對象都有機會處理請求,從而避免了請求的發送者和接受者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有對象處理它為止。

?

責任鏈模式的重點是在“”上,由一條鏈去處理相似的請求在鏈中決定誰來處理這個請求,并返回相應的結果。


責任鏈模式的通用類圖如下所示:

?

通用源代碼:

package com.package4; public class Test4{public static void main(String[] args){//聲明所有的處理節點Handler handler1 = new ConcreteHandler1();Handler handler2 = new ConcreteHandler2();Handler handler3 = new ConcreteHandler3();//設置鏈中的階段順序1-->2-->3handler1.setNext(handler2);handler2.setNext(handler3);//提交請求,返回結果Response response = handler1.handleMessage(new Request());} }abstract class Handler {private Handler nextHandler;//每個處理者都必須對請求做出處理 public final Response handleMessage(Request request){Response response = null; //判斷是否是自己的處理級別if(this.getHandlerLevel().equals(request.getRequestLevel())){response = this.echo(request);}else{ //不屬于自己的處理級別//判斷是否有下一個處理者if(this.nextHandler != null){response = this.nextHandler.handleMessage(request);}else{//沒有適當的處理者,業務自行處理}}return response;}//設置下一個處理者是誰public void setNext(Handler _handler){this.nextHandler = _handler;}//每個處理者都有一個處理級別protected abstract Level getHandlerLevel();//每個處理者都必須實現處理任務protected abstract Response echo(Request request); }class ConcreteHandler1 extends Handler {//定義自己的處理邏輯protected Response echo(Request request) {//完成處理邏輯return null; }//設置自己的處理級別protected Level getHandlerLevel() {//設置自己的處理級別return null;} } class ConcreteHandler2 extends Handler {//定義自己的處理邏輯protected Response echo(Request request) {//完成處理邏輯return null;}//設置自己的處理級別protected Level getHandlerLevel() {//設置自己的處理級別return null;} }class ConcreteHandler3 extends Handler {//定義自己的處理邏輯protected Response echo(Request request) {//完成處理邏輯return null;}//設置自己的處理級別protected Level getHandlerLevel() {//設置自己的處理級別return null;} }class Level {//定義一個請求和處理等級 } class Request {//請求的等級public Level getRequestLevel(){return null;} } class Response {//處理者返回的數據 }抽象的處理者實現三個職責:


一是定義一個請求的處理方法handle Message,唯一對外開放的方法;

二是定義一個鏈的編排方法setNext,設置下一個處理者;

三是定義了具體的請求者必須實現的兩個方法:定義自己能夠處理的級別get Handler Level和具體的處理任務echo。


/*************************************************************************************************

注意handler Message方法前的final關鍵字,模板方法模式中的模板方法也是final類型的。

**************************************************************************************************/

1、責任鏈模式的優點:

責任鏈模式非常顯著的優點是將請求和處理分開。


2、責任鏈模式的缺點:

一是性能問題,每個請求都是從鏈頭遍歷到鏈尾,特別是在鏈比較長的時候,性能是一個非常大的問題。

二是調試不很方便,特別是鏈條比較長,環節比較多的時候,由于采用了類似遞歸的方式,調試的時候邏輯可能比較復雜。


3、使用責任鏈模式的注意事項:

鏈中節點數量需要控制,避免出現超長鏈的情況,一般的做法是在Handler中設置一個最大節點數量,在setNext方法中判斷是否已經是超過其閾值,超過則不允許該鏈建立,避免無意識地破壞系統性能。

?

?

?

?

?

轉載于:https://www.cnblogs.com/lanzhi/p/6467299.html

總結

以上是生活随笔為你收集整理的Java设计模式—责任链模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。