職責鏈模式(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...