Subject.h 597 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #ifndef SUBJECT_H
  2. #define SUBJECT_H
  3. #include <iostream>
  4. #include <list>
  5. #include <string>
  6. class Observer;
  7. using namespace std;
  8. class Subject {
  9. public:
  10. virtual void SetState(const string& st) = 0;
  11. virtual string GetState() = 0;
  12. virtual void Attach(Observer* obv);
  13. virtual void Detach(Observer* obv);
  14. virtual void Notify();
  15. virtual ~Subject();
  16. protected:
  17. Subject();
  18. private:
  19. list<Observer*> _obvs;
  20. };
  21. class ConcreteSubject :public Subject {
  22. public:
  23. string GetState();
  24. void SetState(const string& st);
  25. private:
  26. string _st;
  27. };
  28. #endif// SUBJECT_H