設計模式之職責鏈模式

2022-07-24 09:42:06 字數 1137 閱讀 9606

概念

職責鏈模式就是

使多個物件都有機會處理請求,從而避免請求傳送者和請求處理者之間的耦合。將這多個物件按著需求組合成一條鏈,使請求在這條鏈上進行傳遞,知道有乙個物件處理了請求。

優點

1.客戶提交的請求會沿著我們根據需求設定的鏈一直傳遞,直到有乙個物件處理了它,並且我們可以根據需要隨後的增加或者而修改鏈上的物件,而不影響每個物件本身的使用。

2.請求傳送者和請求接受者之間沒有耦合,互相都沒有對方的資訊,且鏈中的物件本身也不清楚鏈的結構

3.簡化了的物件之間的相互連線,每個物件最多隻保持乙個後繼者的引用,不用保持所有後繼者的引用

注意:1.我們設定的鏈一定要保證最終這個請求可以被處理 2.需要在每個物件中做出判斷,判斷什麼條件下我可以處理或者什麼條件下交給繼任者(當然要判斷時候有繼任者)

使用場景

乙個請求可能被傳遞給多個物件,直到某個物件處理完成結束,但是客戶並不知道請求會被那個物件處理。

**示例

//定義乙個處理請求的介面

public

abstract

class

handler

/*** 賦值方法,設定後繼的責任物件

*/public

void

setsuccessor(handler successor)

}

定義若干個具體處理者類

public

class concretehandler1 extends

handler

else if(successor!=null) }

}

public class concretehandler2 extendshandler else if(successor!=null) }}

......

客戶端**,向鏈上的具體處理者物件提交請求

public

class

client

}

設計模式之職責鏈模式

如果我們現在有乙個需求,乙個人他生了病,這個病要在 醫院才能看,但是這個病人並不清楚,就先去了一級醫院,一級醫院的醫生告訴他你的病要去二級醫院看,二級醫院也告訴他 你的病我這裡看不了,你要去 醫院才能看,最後他去 醫院把病看好了.這個過程直接寫成 class patient this.patient...

設計模式之職責鏈模式

職責鏈模式 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。適用場景 1 有多個的物件可以處理乙個請求,哪個物件處理該請求執行時刻自動確定 2 在不明確指定接收者的情況下,向多個物件中的乙個提交乙個請求 ...

設計模式之職責鏈模式

職責鏈模式 chain of responsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將多個物件連成一條鏈,沿著這條鏈傳遞請求直到有物件處理它為止。可以定義乙個抽象類來表示處理事件的物件,這個類首先有個處理事件的抽象方法,然後提供乙個方法設定下一級處理者...