View difference between Paste ID: pwxyzFFd and Ad4xKQcr
SHOW: | | - or go back to the newest paste.
1
class Observable
2
{
3
public:
4
  Observable() : obs_list() {}
5
6
  void add_observer(Observer* o) { obs_list.push_back(o); }
7
  void remove_observer(Observer* o) { ... }
8
9
protected:
10
  void notify_all()
11
  {
12
    for (Observer* o : obs_list)
13
      o->notify();
14
  }
15
16
private:
17
  vector<Observer*> obs_list;
18
};
19
20
class Data : public Observable
21
{
22
  ...
23
};
24
25
26
class Observer
27
{
28
  virtual Observer();
29
  virtual void notify() = 0;
30
  ...
31
};
32
33
class Bar_Chart : public Observer
34
{
35
  Bar_Chart(){...}
36
  
37
  void notify() override
38
  {
39
    ...
40
  }
41
};
42
43
int main()
44
{
45
  Data& observable{};
46
  Bar_chart* bar_chart{new Bar_Chart{}};
47
  observable.add_observer(bar_chart);
48
  ...
49
}