定義:將能夠處理同一類請求的物件連成一條鏈,使這些物件都有機會處理請求,所提交的請求沿著鏈傳遞。從而避免請求的傳送者和接受者之間的耦合關係。鏈上的物件逐個判斷是否有能力處理該請求,如果能則就處理,如果不能,則傳給鏈上的下乙個物件。直到有乙個物件處理它為止。
使用場景:
包括以下角色:
抽象處理者角色
public abstract class handler
public handler getnexthandler()
}
具體處理者(包含3個處理角色)
public class handler1 extends handler
@override
public void handlerequest() else }}
public class handler2 extends handler
@override
public void handlerequest() else }}
public class handler3 extends handler
@override
public void handlerequest()
}
demo
public class demo
}
結果:
-----handler 1-----
由handler1處理
-----handler 2-----
由handler2處理
----handler 3 -----
handler3 處理
--------get handler 1.next --------
handler2
-------get handler 2.next ----
handler3
實際應用中,一般還有有乙個類來封裝責任鏈,完成責任鏈的順序編排,並返回鏈中的第乙個處理者,這樣上層邏輯就不再需要設定具體的責任鏈了,簡化了上層邏輯,減少了模組間的耦合,系統也會更靈活。
優點
缺點
設計模式 職責鏈模式
2008年08月17日 星期日 下午 04 28 using system using system.collections.generic using system.text public officer officer o public abstract void deal action a c...
設計模式 職責鏈模式
1 request.h ifndef request h define request h include include using namespace std class request 請求類定義 endif request h 2 manager.h ifndef manager h def...
設計模式 職責鏈模式
今天跟大家分享下設計模式中的職責鏈模式。不知道大家在學習職責鏈模式的時候是否感覺困難。我剛開始學的時候就被整暈了。呵呵,進入正題。職責鏈模式是物件行為型模式中比較有特點的設計模式了,的確有意思,它可以像資料結構中煉表一樣傳遞。其實生活中好多的行為方式都體現了職責鏈模式,我們初期學習者可以把職責鏈模式...