簡述:
職責鏈模式:使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。
職責鏈模式包括:處理請示介面類、具體處理者類。
處理請示介面類:定義處理請求的介面。
具體處理者類:繼承自處理請示介面類,處理它所負責的請求,可訪問它的後繼者,如果可處理該請求,就處理之,否則就將該請求**給它的後繼者。
職責鏈模式:
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...