設計模式 職責鏈模式

2021-09-11 23:00:27 字數 1381 閱讀 6702

定義:將能夠處理同一類請求的物件連成一條鏈,使這些物件都有機會處理請求,所提交的請求沿著鏈傳遞。從而避免請求的傳送者和接受者之間的耦合關係。鏈上的物件逐個判斷是否有能力處理該請求,如果能則就處理,如果不能,則傳給鏈上的下乙個物件。直到有乙個物件處理它為止。

使用場景:

包括以下角色:

抽象處理者角色

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...

設計模式 職責鏈模式

今天跟大家分享下設計模式中的職責鏈模式。不知道大家在學習職責鏈模式的時候是否感覺困難。我剛開始學的時候就被整暈了。呵呵,進入正題。職責鏈模式是物件行為型模式中比較有特點的設計模式了,的確有意思,它可以像資料結構中煉表一樣傳遞。其實生活中好多的行為方式都體現了職責鏈模式,我們初期學習者可以把職責鏈模式...