設計模式之責任鏈模式

2021-09-11 16:44:08 字數 1612 閱讀 2835

職責鏈模式(chain of responsibility):使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到又乙個物件處理它為止。

有多個物件可以處理同乙個請求,具體哪個物件處理該請求由執行時刻自動確定

在不明確指定接收者的情況下,向多個物件中的乙個提交乙個請求

可動態指定一組物件處理請求

降低耦合度

可簡化物件的相互連線

增強給物件指派職責的靈活性

增加新的請求處理類很方便

不能保證請求一定被接收

系統效能將受到一定影響,而且在進行**除錯時不太方便;可能會造成迴圈呼叫

定義乙個處理請求的介面

public abstract class handler 

public abstract void handlerrequest(int request);

}

具體處理者類1

當請求數在0到10之間則有權處理,否則轉到下一位。

public class concretehandler1 extends handler  else if (successor != null) }}

具體處理者者2

當請求數在10到20之間則有權處理,否則轉到下一位

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

具體處理者者3

當請求數在20到30之間則有權處理,否則轉到下一位

public class concretehandler3 extends handler  else if (successor != null) }}

客戶端呼叫

職責鏈模式(chain of responsibility),使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。

public class client ;

for (int request : requests) }}

設計模式系列:

建立型結構型

行為型工廠方法

簡單工廠

抽象工廠

建造者模式

單例模式

原型模式

組合模式

外觀模式

橋接模式

**模式

享元模式

介面卡模式

裝飾模式

策略模式

模板方法

狀態模式

觀察者模式

備忘錄模式

迭代器模式

命令模式

職責鏈模式

直譯器模式

訪問者模式

中介者模式

設計模式之 責任鏈模式

在一些情況下,對乙個訊息 含事件 的響應和處理需要很多物件來參與,這些物件對訊息的處理有前後順序,形成乙個處理鏈條,但物件是否真正處理訊息有賴於在它之前的物件的處理策略,前乙個物件處理後,後乙個物件則不需參與處理,這就是責任鏈模式。現實中有很多類似的場景,比如上訪,上訪一般是從最基層的信訪部門接受信...

設計模式之(責任鏈模式)

chain of responsibleity 責任鏈模式 在責任鏈模式 中,很多物件由每乙個物件對其下家的引用而接。起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某乙個物件決定處理此請求。客戶並不知道鏈上的哪乙個物件最終處理這個請求,系統可以在不影響客戶端的情況下動態的重新組織鏈和分配責任。處理者...

設計模式之責任鏈模式

假設現在乙個公司的請假流程如下 一天及以下由小組組長審批,一天以上三天以下由經理審批,三天以上七天以下由老闆審批,七天以上直接勸退。如果每次請假時都很長的if else 來判斷該去找誰請假,很不容易擴充套件,我們使用責任鏈模式來實現。首先,是乙個抽象的父類 public abstract class...