blob: f4bba3b075883328dd8ecf56b8d96127ae333867 (
plain)
| 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
29
30
31
32
33
34
35
36
37
38
 | #pragma once
#include "Observer.h"
#include <list>
class Subject
{
public:
    Subject();
    virtual ~Subject();
    //--------------------------------------------------------------------------
    // Description : Notify all observers of a state change
    //--------------------------------------------------------------------------
    void notify();
    //--------------------------------------------------------------------------
    // Description : Attach an observer to the subject
    // Parameters  : observer - the observer
    //--------------------------------------------------------------------------
    void attach(Observer &observer);
    //--------------------------------------------------------------------------
    // Description : Detach an observer from the subject
    // Parameters  : observer - the observer
    //--------------------------------------------------------------------------
    void detach(const Observer &observer);
  private:
    //--------------------------------------------------------------------------
    // Description : Disallow assignment operator and copy constructor
    //--------------------------------------------------------------------------
    Subject(const Subject &rhs);
    const Subject & operator=(const Subject &rhs);
    std::list<Observer *> m_observer_list;
};
 |