biquadris / subject.h
subject.h
Raw
/*
    Subject class module
    
	the Subject abstract class for observer design pattern
*/

#ifndef _SUBJECT_H_
#define _SUBJECT_H_

#include <vector>
#include "subscriptions.h"

class Observer;

class Subject {
	std::vector<Observer *> observers;
	public:
		Subject();
		virtual ~Subject() = 0;
		void attach(Observer *obs);
		void detach(Observer *obs);
		void notifyObservers(SubscriptionType t);
		void notifyObservers(Subject *whoNotified, SubscriptionType t);
};

#endif