コード
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Observer{
public:
virtual void update() = 0;
};
class Subject{
public:
void add(Observer *obs){
views.push_back(obs);
}
void notify(){
for(int i=0; i<views.size(); i++){
views[i]->update();
}
}
private:
vector<Observer *> views;
};
class ConcreteObserver: Observer{
public:
ConcreteObserver(Subject *subj, string name){
subj->add(this);
this->name = name;
}
void update(){
cout << this->name << " is updated" << endl;
}
private:
string name;
};
int main(){
Subject subj;
ConcreteObserver obs1(&subj, "observer1");
ConcreteObserver obs2(&subj, "observer2");
subj.notify();
return 0;
}