[1] What is the responsibility chain model?
Responsibility Chain Mode:
[2] example code of the responsibility chain mode:
Sample Code:
1 # include <iostream> 2 # include <string> 3 using namespace STD; 4 5 class request 6 {7 public: 8 string requesttype; 9 string requestcontent; 10 int number; 11}; 12 13 class manager 14 {15 protected: 16 string name; 17 manager * superior; 18 public: 19 Manager (string name) 20 {21 This-> name = Name; 22} 23 void setsuperior (Manager * Superior) 24 {25 this-> superior = superior; 26} 27 virtual void Requestapplications (Request * request) = 0; 28}; 29 30 class commonmanager: Public Manager 31 {32 public: 33 commonmanager (string name): Manager (name) 34 {} 35 void requestapplications (Request * request) 36 {37 If (request-> requesttype = "leave" & request-> Number <= 2) 38 {39 cout <name <"" <request-> requestcontent <"leave days:" <request-> Number <"approved" <Endl; 40} 41 else 42 {43 If (Superior! = NULL) 44 {45 superior-> requestapplications (request); 46} 47} 48} 49}; 50 51 class majordomo: Public Manager 52 {53 public: 54 majordomo (string name): Manager (name) 55 {} 56 void requestapplications (Request * request) 57 {58 If (request-> requesttype = "leave" & request-> Number <= 5) 59 {60 cout <name <"" <request-> requestcontent <"leave days:" <request-> Number <"approved" <Endl; 61} 62 else 63 {64 if (Superior! = NULL) 65 {66 superior-> requestapplications (request); 67} 68} 69} 70}; 71 72 73 class generalmanager: Public Manager 74 {75 public: 76 generalmanager (string name): Manager (name) 77 {} 78 void requestapplications (Request * request) 79 {80 If (request-> requesttype = "leave ") 81 {82 cout <name <"" <request-> requestcontent <"leave days:" <request-> Number <"approved" <Endl; 83} 84} 85}; 86 87 int main () 88 {89 commonmanager * jingli = new commonmanager ("manager "); 90 majordomo * zongjian = new majordomo (""); 91 generalmanager * zongjingli = new generalmanager (""); 92 93 jingli-> setsuperior (zongjian ); 94 zongjian-> setsuperior (zongjingli); 95 96 Request * request = new request (); 97 98 request-> requesttype = "leave "; 99 request-> requestcontent = "Li junhong leave"; 100 request-> Number = 1; 101 jingli-> requestapplications (request); 102 103 request-> requesttype = "leave "; 104 request-> requestcontent = "Li junhong leave"; 105 request-> Number = 4; 106 jingli-> requestapplications (request); 107 108 request-> requesttype = "leave "; 109 request-> requestcontent = "Li junhong leave"; 110 request-> Number = 10; 111 jingli-> requestapplications (request); 112 113 return 0; 114} 115 // result: 116/* 117 Manager Li junhong leave days: 1 approved 118 director Li junhong leave days: 4 approved 119 general manager Li junhong leave days: 10. Approved: 120 */View code
Good good study, day up.
Sequential selection cycle Summary
Responsibility Chain Model