Overview: This pattern is used when an event needs to be notified to multiple observers. The typical usages of the observer pattern are: Listening for an external event (such as a user action). Listening for changes of the value of an object property. In a mailing list, where every time an event happens a message is sent to the people subscribed to the list. This design pattern is used extensively in event-driven programming. The observer pattern is also very often associated with the model-view-controller (MVC) paradigm. Example of usage in telecom management programming: Events are an important part of OSS applications. When a specific event occurs, multiple OSS modules might be interested in getting a notification to perform a set of pre- defined actions. This can be easily implemented using observer pattern where the OSS modules can register for a specific event and will get notified when the event occurs. Implementation: // Observer Design Pattern // ver0.0 Jithesh Sathyan Aug 01, 2009 #include <iostream.h> class Observer // Add constructor :-) public: int flag_set; virtual void update ( ) } *obsr [3] i // Would suggest to store the observers in a vector // SO that we don't have to keep track of number of observers class Subject // Add constructor :-) Fundamentals of EMS, NMS and OSS/BSS public: void registerObserver (Observer * o) void removeObserver (Observer * o); void notifyObserver ( ) ; class Database public Subject public: void registerObserver (Observer* x) x->flag_set = 1; void removeObserver (Observer* x) x->flag_set = 0; void notifyObserver () for (int j=0; j<3; j++) if (obsr :[j]->flag_set == 1) obsr[j]->update (); void editRecord () notifyObserver() ; class Administrator : public Observer void update () cout<<"Administrator got notified"<<endl; class Programmer : public Observer void update () cout<<"Programmer got notified"<<endl; OSS Design Patterns class Engineer: public Observer void update () cout<<"Engineer got notified"<<endl. void main () Database * database = new Database (); Administra