Advertisement
Guest User

Untitled

a guest
Jul 7th, 2015
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <memory>
  3. #include <set>
  4.  
  5. template <class T>
  6. class Subject;
  7.  
  8. template <class T>
  9. class Observor
  10. {
  11. public :
  12. virtual void update(const T& t) = 0;
  13. virtual ~Observor(){}
  14.  
  15. void setSubject(Subject<T>* subjectPtr)
  16. {
  17. _subject = subjectPtr;
  18. }
  19.  
  20. private:
  21. Subject<T>* _subject;
  22. };
  23.  
  24. template<class T>
  25. class Subject
  26. {
  27. public :
  28. virtual void registerObservor(std::shared_ptr< Observor<T> > obv) = 0;
  29. virtual ~Subject(){}
  30. };
  31.  
  32. template<class T>
  33. class WeatherStation : public Subject<T>
  34. {
  35. public :
  36. void registerObservor(std::shared_ptr< Observor<T> > obv)
  37. {
  38. obv->setSubject(this);
  39. _observors.insert(obv);
  40. }
  41.  
  42. private :
  43. std::set< std::shared_ptr< Observor<T> > > _observors;
  44. };
  45.  
  46. class StatisticsDisplay : public Observor<int>
  47. {
  48. public :
  49. void update(int data){ std::cout<<"Statistics Display"; }
  50. };
  51.  
  52. int main()
  53. {
  54. WeatherStation<int> wStation;
  55. }
  56.  
  57. int main()
  58. {
  59. WeatherStation<int> wStation;
  60. auto sDisplay = std::make_shared<StatisticsDisplay>();
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement