java中的責任鏈模式理解

2021-09-23 13:18:55 字數 2370 閱讀 7859

定義:為了避免請求傳送者與多個請求處理者耦合在一起,將所有請求的處理者通過前一物件記住其下乙個物件的引用而連成一條鏈;當有請求發生時,可將請求沿著這條鏈傳遞,直到有物件處理它為止

簡單理解:當乙個請求可能需要多人共同完成,a無法完成時,需要推給b,b處理不了需要推給c這種情況下。a、b、c形成乙個鏈條,沿著這個鏈條,這個請求就能被處理。

模擬場景:乙個公司報銷流程如下,採購員在採購時,如果採購金額在5w以內,部門主管可以直接審批;

如果在10w以內,副董事長可以直接審批;如果在20w以內,董事長可以直接審批;如果高於20w則需要召開董事會商量。

//抽象處理器

public

abstract

class

handler

request

>

public

abstract

void

handlerrequest

(t t)

;}

//抽象的請求

@data

public

abstract

class

request

//採購請求

@data

@allargsconstructor

public

class

purchaseresquest

extends

request

//對於購買請求的統一處理器

public

abstract

class

purchaseresquest

>

extends

handler

@override

public

void

setnexthandler

(handler nexthandler)

@override

public

abstract

void

handlerrequest

(t request)

;}

//部門主管

public

class

directorhandler

purchaseresquest

>

extends

@override

public

void

handlerrequest

(purchaseresquest request)

else

}}

//副董事長

public

class

vicepresident

purchaseresquest

>

extends

@override

public

void

handlerrequest

(purchaseresquest request)

else

}}

/董事長

public

class

presidenthandler

purchaseresquest

>

extends

@override

public

void

handlerrequest

(purchaseresquest request)

else

}}

//董事會

public

class

congresshandler

purchaseresquest

>

extends

@override

public

void

handlerrequest

(purchaseresquest request)

}

//測試類

public

class

test

}

//測試結果

部門主管無權審批該申請

董事會審批了該購買請求:金額為:22.0 購買目的為:買辦公用品

process finished with exit code 0

試著修改amount的值,處理者也是不一樣的

java責任鏈模式

責任鏈模式定義如下 使多個物件都有機會處理請求,從而避免了請求的傳送者和接受者之間的耦合關 系。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止。package cn.yang.test.controller created by dev yang on 2016 3 1.publ...

Java 責任鏈模式

責任鏈模式定義 將能夠處理同一類請求的物件連成一條鏈,所提交的請求沿鏈傳遞,鏈上的物件逐個判斷是否有能力處理該請求,如果能,則自己處理,如果不能,則傳遞給鏈上的下乙個物件。責任鏈模式常見的使用場景 1.接力賽跑 2.公司的公文審批 3.大學裡,獎學金審批流程等。責任鏈主要的作用 責任鏈上的處理者,負...

Java的責任鏈模式

1.責任鏈模式是一種物件的行為模式。在責任鏈模式裡,很多物件由每乙個物件對其下家的引用而連線起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某乙個物件決定處理此請求。發出這個請求的客戶端並不知道鏈上的哪乙個物件最終處理這個請求,這使得系統可以在不影響客戶端的情況下動態地重新組織和分配責任。2.結構圖 ...