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 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
//=========================================================
// main.cpp
//
// Program main function that demonstrates the Observer
// Design pattern.
//
// In this program:
//
// ConcreteSubject class: ClockTimer
// ConcreteObserver class: DigitalClock
// AnalogClock
//
// The ClockTimer object changes state by memeber function
// Tick(). This will trigger Update() function for both
// ConcreteObserver DigitalClock and AnalogClock. For demo,
// purpose, the observer objects will print out the current
// time in respond.
//
//=========================================================
#include "ClockTimer.h"
#include "DigitalClock.h"
#include "AnalogClock.h"
int main(void)
{
ClockTimer timer;
DigitalClock digitalClock;
ClockObserver::aspectof ()->addObserver (&timer, &digitalClock);
AnalogClock analogClock;
ClockObserver::aspectof ()->addObserver (&timer, &analogClock);
timer.Tick(); // subject state change and update all it's
// observers which are digitalClock and
// analogClock in this program
timer.Tick(); // and again
return 0;
}
|