1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#ifndef MYDIGITALCLOCK_AH
#define MYDIGITALCLOCK_AH
#include "ObserverPattern.ah"
#include "ClockTimer.h"
aspect ClockObserver : public ObserverPattern {
pointcut subjectChange (Subject &subject) =
execution ("void ClockTimer::Tick()") && that (subject);
pointcut observers() = "DigitalClock"||"AnalogClock";
public:
advice "ClockTimer" : baseclass (Subject);
advice observers () : baseclass (Observer);
advice observers () : void update (ObserverPattern::Subject *subject) {
Draw ((const ClockTimer &)*subject);
}
virtual void updateObserver(Subject *subject, Observer *observer) {
observer->update (subject);
}
};
#endif //MYDIGITALCLOCK_AH
|