9 virtual void update(
const std::string &messageFromSubject) = 0;
21 std::list<IObserver *> observers;
28 observers.push_back(observer);
32 observers.remove(observer);
37 observer->update(message);
42 this->message = message;
48 std::string messageFromSubject;
50 static int static_number;
55 this->subject.
attach(
this);
56 number = ++static_number;
63 void update(
const std::string &messageFromSubject)
override {
64 this->messageFromSubject = messageFromSubject;
69 std::cout <<
"Observer " << number <<
": a new message is available --> " << messageFromSubject << std::endl;
void update(const std::string &messageFromSubject) override
virtual ~ConcreteObserver()
ConcreteObserver(ConcreteSubject &subject)
void createMessage(std::string message="Empty")
virtual ~ConcreteSubject()
void attach(IObserver *observer) override
void detach(IObserver *observer) override
virtual void update(const std::string &messageFromSubject)=0
virtual void detach(IObserver *observer)=0
virtual void attach(IObserver *observer)=0