.3 Chain of Responsibility Design Pattern Overview: This pattern is used when a request sent from a dispatcher would require processing from an object based on the specific context set by the dis- patcher. This avoids coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. It is more like launching and leaving a request to a pipeline that contains many handlers for processing the request. Example of usage in telecom management programming: All alarm management solutions have a help component that gives the user information on a specific alarm. That is when alarm MOD23 is raised; the operator can click help on that alarm to get information on what the cause of the alarm is and how it needs to be fixed. There will be thousands of alarms grouped under a set of modules. Each module maintains an index of alarms that it supports. If the help component is implemented using a chain of responsibility pattern, then a typical help request for MOD23 will result in a search through help modules one by one where each module takes up responsibility to check for MOD23 and leave the responsibility to next module in the chain when the string is not found. Implementation: // Chain of Responsibility design pattern // ver0.0 Jithesh Sathyan Aug 06, 2009 #include <iostream. h> enum { general, hss, hlr } ; class Alarm // Add constructor :-) public: virtual void needHelp (int x) // Implement in child class HSS: public Alarm private: Alarm *emp; OSS Design Patterns public: HSS (Alarm *pass) emp = pass; void needHelp(int x) cout <<"In HSS Alarm module"<<endl; if (x != hss) cout <<"No help in HSS Alarm module"<<endl; emp->needHelp(1 ; cout<<"Help identified in HSS Alarm Module"<<endl class HLR: public Alarm private: Alarm *emp; public: HLR (Alarm *pass) emp = pass; void needHelp (int x) cout <<"In HLR Alarm module"<<endl; if(x != ) hlr) emp->needHelp (x) ; cout <<"No help in HLR Alarm module"<<endl cout<<"Help identified in HLR Alarm Module"<<endl; Fundamentals of EMS, NMS and OSS/BSS