Responsibility Chain Model

Source: Internet
Author: User

[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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.