CPP
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <list>
using namespace std;
class iSubject;
class iObserver
{
public:
virtual ~iObserver() = default;
virtual void update(iSubject* pSubject) = 0;
};
class iSubject
{
public:
virtual ~iSubject() = default;
void addObserver(iObserver* pObserver) { m_observers.push_back(pObserver); }
void removeObserver(iObserver* pObserver) { m_observers.remove(pObserver); }
virtual void notify(iSubject* pSubject)
{
for (auto pObserver : m_observers)
pObserver->update(pSubject);
}
private:
list<iObserver*> m_observers;
};
class Boiler : public iSubject
Enter to Rename, Shift+Enter to Preview
OUTPUT
Run