#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