Example 18-1: Observer Implemented
TOC
Customer
TOP
Customer.h
#pragma once
#include
#include
#include "Observer.h"
using namespace std;
class Customer
{
public:
Customer(void);
void attach( Observer *myObserver);
void detach( Observer *myObserver);
string* getState();
void notifyObs();
private:
vector myObs;
public:
~Customer(void);
};
Customer.cpp
#include "Customer.h"
Customer::Customer(void)
{
}
Customer::~Customer(void)
{
}
void Customer::attach( Observer *myObserver)
{
myObs.push_back( myObserver);
}
void Customer::detach( Observer *myObserver)
{
for (int i= 0; i< myObs.size(); i++)
{
if (myObs[i]== myObserver)
{
myObs.erase(myObs.begin()+i);
return;
}
}
}
void Customer::notifyObs()
{
// set arg to something that helps
// tell the Observers what happened
for (int i= 0; i< myObs.size(); i++)
{
myObs[i]->update(this);
}
}
string* Customer::getState()
{
string *state= new string;
// set state
return 0l;
}
Observer
TOP
Observer.h
#pragma once
class Customer;
class Observer
{
public:
Observer(void);
virtual void update( Customer *myCust)= 0;
public:
~Observer(void);
};
Observer.cpp
#include "Observer.h"
Observer::Observer(void)
{
}
Observer::~Observer(void)
{
}
AddrVerification
TOP
AddrVerification.h
#pragma once
#include "Observer.h"
#include "Customer.h"
class AddrVerification : public Observer
{
public:
AddrVerification(void);
void update( Customer *myCust);
public:
~AddrVerification(void);
};
AddrVerification.cpp
#include "AddrVerification.h"
AddrVerification::AddrVerification(void)
{
}
AddrVerification::~AddrVerification(void)
{
}
void AddrVerification::update ( Customer *myCust)
{
// do Address verification stuff here
// can get more information about customer
// in question by using myCust
}
Example 18-1: Observer Implemented
TOC
Customer
TOP
Customer.h
#pragma once
#include
#include
#include "Observer.h"
using namespace std;
class Customer
{
public:
Customer(void);
void attach( Observer *myObserver);
void detach( Observer *myObserver);
string* getState();
void notifyObs();
private:
vector myObs;
public:
~Customer(void);
};
Customer.cpp
#include "Customer.h"
Customer::Customer(void)
{
}
Customer::~Customer(void)
{
}
void Customer::attach( Observer *myObserver)
{
myObs.push_back( myObserver);
}
void Customer::detach( Observer *myObserver)
{
for (int i= 0; i< myObs.size(); i++)
{
if (myObs[i]== myObserver)
{
myObs.erase(myObs.begin()+i);
return;
}
}
}
void Customer::notifyObs()
{
// set arg to something that helps
// tell the Observers what happened
for (int i= 0; i< myObs.size(); i++)
{
myObs[i]->update(this);
}
}
string* Customer::getState()
{
string *state= new string;
// set state
return 0l;
}
Observer
TOP
Observer.h
#pragma once
class Customer;
class Observer
{
public:
Observer(void);
virtual void update( Customer *myCust)= 0;
public:
~Observer(void);
};
Observer.cpp
#include "Observer.h"
Observer::Observer(void)
{
}
Observer::~Observer(void)
{
}
AddrVerification
TOP
AddrVerification.h
#pragma once
#include "Observer.h"
#include "Customer.h"
class AddrVerification : public Observer
{
public:
AddrVerification(void);
void update( Customer *myCust);
public:
~AddrVerification(void);
};
AddrVerification.cpp
#include "AddrVerification.h"
AddrVerification::AddrVerification(void)
{
}
AddrVerification::~AddrVerification(void)
{
}
void AddrVerification::update ( Customer *myCust)
{
// do Address verification stuff here
// can get more information about customer
// in question by using myCust
}
WelcomeLetter
TOP
WelcomeLetter.h
#pragma once
#include "Observer.h"
#include "Customer.h"
class WelcomeLetter : public Observer
{
public:
WelcomeLetter(void);
void update( Customer *myCust);
public:
~WelcomeLetter(void);
};
WelcomeLetter.cpp
#include "WelcomeLetter.h"
WelcomeLetter::WelcomeLetter(void)
{
}
WelcomeLetter::~WelcomeLetter(void)
{
}
void WelcomeLetter::update( Customer *myCust)
{
// do Welcome Letter stuff
// here can get more
// information about customer
// in question by using myCust
}
<
WelcomeLetter
TOP
WelcomeLetter.h
#pragma once
#include "Observer.h"
#include "Customer.h"
class WelcomeLetter : public Observer
{
public:
WelcomeLetter(void);
void update( Customer *myCust);
public:
~WelcomeLetter(void);
};
WelcomeLetter.cpp
#include "WelcomeLetter.h"
WelcomeLetter::WelcomeLetter(void)
{
}
WelcomeLetter::~WelcomeLetter(void)
{
}
void WelcomeLetter::update( Customer *myCust)
{
// do Welcome Letter stuff
// here can get more
// information about customer
// in question by using myCust
}