020 第24章 職責鏈模式

2022-07-17 03:09:11 字數 2181 閱讀 1694

簡述:

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

職責鏈模式包括:處理請示介面類、具體處理者類。

處理請示介面類:定義處理請求的介面。

具體處理者類:繼承自處理請示介面類,處理它所負責的請求,可訪問它的後繼者,如果可處理該請求,就處理之,否則就將該請求**給它的後繼者。

職責鏈模式:

1 #include 2

using

namespace

std;34

//處理請示介面類

5class

chandler615

16virtual

void handlerrequest(int nrquest) = 0;17

};18

19//

具體處理者類

20class cconcretehandler1 : public

chandler

2130

};31

32//

具體處理者類

33class cconcretehandler2 : public

chandler

3443

};44

45//

具體處理者類

46class cconcretehandler3 : public

chandler

4756

};57

58int

main()59;

6768

for(auto request : requests)

69handler1.handlerrequest(request);

7071 system("

pause");

72return0;

73 }

輸出結果:

例:員工請求加薪

**如下:

1 #include 2

using

namespace

std;34

//請求類

5class

crequest614

15string getrequesttype()

1617

void setrequestcontent(string szrequestcontent)

1819

string getrequestcontent()

2021

void setnumber(int nnumber)

2223

int getnumber()

24};

2526

//管理者(處理請示介面類)

27class

cmanager

2835

36//

設定管理者上級

37void setsuperior(cmanager* psuperior)

3839

//處理請求

40virtual;41

};42

43//

經理(具體處理類)

44class ccommonmanager : public

cmanager

4548

49virtual

5058}59

};60

61//

總監(具體處理類)

62class cmajordomo: public

cmanager

6366

67virtual

6876}77

};78

79//

總經理(具體處理類)

80class cgeneralmanager : public

cmanager

8184

85virtual

8694

};95

96int

main()

97

輸出結果:

24 職責鏈模式

使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞請求,直到有乙個物件處理它為止。從定義分析 對於乙個請求會有多個物件對其進行 請求的傳送者和最終處理請求的接受者之間互相並不知道,沒有任何耦合關係。最終能夠處理乙個請求的物件有且只有乙個,如...

《大話設計模式》讀書筆記 第24章 職責鏈模式

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

職責鏈模式

1.職責鏈 namespace dutychainpattern 用來處理請求 public abstract void transmitrequest int request 班主任 職責鏈上的乙個節點,在裡面進行判斷,看能否處理請求,不能則將請求轉移 public class classadvi...