Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<stdio.h>
- #include<vector>
- using namespace std;
- class Subject{
- public:
- vector<class Observer*> myObservers;
- Subject()
- {
- myObservers.clear();
- }
- void addObserver(Observer *obs)
- {
- myObservers.push_back(obs);
- }
- void notifyObservers();
- void doIt(){
- this->notifyObservers();
- }
- };
- class Observer{
- public:
- Subject* subiect;
- virtual void update() = 0;
- };
- void Subject::notifyObservers()
- {
- vector<Observer*>::iterator it;
- for (it = myObservers.begin(); it != myObservers.end(); ++it)
- (*it)->update();
- }
- class ObsA : public Observer
- {
- public:
- ObsA(Subject *sub1)
- {
- this->subiect = sub1;
- }
- void update()
- {
- printf("IT'S UPDATED 1\n");
- }
- };
- class ObsB : public Observer
- {
- public:
- ObsB(Subject *sub2)
- {
- this->subiect = sub2;
- }
- void update()
- {
- printf("IT'S UPDATED 2\n");
- }
- };
- void main()
- {
- Subject *sub = new Subject();
- ObsA *obs1 = new ObsA(sub);
- ObsB *obs2 = new ObsB(sub);
- sub->addObserver(obs1);
- sub->addObserver(obs2);
- sub->doIt();
- int n;
- cin >> n;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement