www.pudn.com > Observerwangdxh.zip > Subject.cpp
// Subject.cpp : implementation of the CSubject class
//
#include "stdafx.h"
#include "Subject.h"
CSubject::CSubject()
{
}
CSubject::~CSubject()
{
// Step 1 - Remove all the items for the observer list
m_ObserverList.RemoveAll();
}
VOID CSubject::Attach( CObserver * pObserver )
{
// Step 1 - Add the observer to the list
m_ObserverList.AddTail( pObserver );
}
VOID CSubject::Detach( CObserver * pObserver )
{
// Step 1 - Find and remove the observer from the list
POSITION Pos = m_ObserverList.Find( pObserver );
if( Pos != NULL )
{
m_ObserverList.RemoveAt( Pos );
}
}
VOID CSubject::Notify()
{
POSITION Pos;
CObserver * pObserver = NULL;
// Step 1 - Notify all the observers to update themselves
for( Pos = m_ObserverList.GetHeadPosition(); Pos != NULL; )
{
pObserver = ( CObserver * ) m_ObserverList.GetNext( Pos );
pObserver->Update( this );
}
}