Gewerkt aan opdracht 4
Co-authored-by: Aryan Lala (19097727) <A.E.Lala@student.hhs.nl>
This commit is contained in:
13
Opdracht_4/Observer/Observer.cpp
Normal file
13
Opdracht_4/Observer/Observer.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "Observer.h"
|
||||
|
||||
void Subject::notify ( ){
|
||||
for ( list<Observer*>::iterator i=L.begin( ); i!=L.end( ); ++i ) (*i)->update( );
|
||||
}
|
||||
|
||||
Observer::Observer ( Subject* s ) : S(s){
|
||||
getSubject( )->insert(this);
|
||||
}
|
||||
|
||||
Observer::~Observer ( ){
|
||||
getSubject( )->remove ( this );
|
||||
}
|
26
Opdracht_4/Observer/Observer.h
Normal file
26
Opdracht_4/Observer/Observer.h
Normal file
@@ -0,0 +1,26 @@
|
||||
#ifndef __Observer_H
|
||||
#define __Observer_H
|
||||
|
||||
#include <list>
|
||||
|
||||
using namespace std;
|
||||
|
||||
class Subject;
|
||||
|
||||
class Observer{
|
||||
private: Subject* S;
|
||||
protected: Subject* getSubject ( ) const { return S; }
|
||||
public: Observer (Subject* s);
|
||||
virtual ~Observer ( );
|
||||
virtual void update ( ) = 0;
|
||||
};
|
||||
|
||||
class Subject{
|
||||
private: list<Observer*> L;
|
||||
protected: virtual void notify ( );
|
||||
public: Subject ( ) { }
|
||||
virtual ~Subject ( ) { }
|
||||
virtual void insert (Observer* s) { L.push_front(s); }
|
||||
virtual void remove (Observer* s) { L.remove(s); }
|
||||
};
|
||||
#endif
|
Reference in New Issue
Block a user