/********************************************************************************
* File Name : Handler.h
*
* EMail Addr : seakingw@163.com
*
* Description : interface for the CHandler class.
*
********************************************************************************/
#ifndef _CHIANOFRESPONSBILITY
#define _CHIANOFRESPONSBILITY
#define _CHIANOFRESPONSBILITY
class CHandler
{
public:
virtual ~CHandler();
virtual void HandleRequest(UINT nRequestID = 0);
void SetSuccessor(CHandler *pSucc);
CHandler *GetSuccessor();
protected:
CHandler();
CHandler(CHandler *pSucc);
private:
CHandler *m_pSucc;
{
public:
virtual ~CHandler();
virtual void HandleRequest(UINT nRequestID = 0);
void SetSuccessor(CHandler *pSucc);
CHandler *GetSuccessor();
protected:
CHandler();
CHandler(CHandler *pSucc);
private:
CHandler *m_pSucc;
};
#endif
#endif
/********************************************************************************
* File Name : Handler.cpp
*
* EMail Addr : seakingw@163.com
*
*
* Description : implementation of the CHandler class.
*
********************************************************************************/
* File Name : Handler.cpp
*
* EMail Addr : seakingw@163.com
*
*
* Description : implementation of the CHandler class.
*
********************************************************************************/
#include "Handler.h"
CHandler::CHandler()
{
m_pSucc = NULL;
}
CHandler::CHandler(CHandler *pSucc)
{
m_pSucc = pSucc;
}
CHandler::~CHandler()
{
if(m_pSucc)
m_pSucc = NULL;
}
void CHandler ::SetSuccessor(CHandler *pSucc)
{
m_pSucc = pSucc;
}
CHandler* CHandler::GetSuccessor()
{
return m_pSucc;
}
void CHandler::HandleRequest(UINT nRequestID)
{
if(m_pSucc != NULL)
m_pSucc->HandleRequest(nRequestID);
}
{
m_pSucc = NULL;
}
CHandler::CHandler(CHandler *pSucc)
{
m_pSucc = pSucc;
}
CHandler::~CHandler()
{
if(m_pSucc)
m_pSucc = NULL;
}
void CHandler ::SetSuccessor(CHandler *pSucc)
{
m_pSucc = pSucc;
}
CHandler* CHandler::GetSuccessor()
{
return m_pSucc;
}
void CHandler::HandleRequest(UINT nRequestID)
{
if(m_pSucc != NULL)
m_pSucc->HandleRequest(nRequestID);
}
本文介绍了一个简单的责任链模式实现,该模式定义了一个处理请求的接收者对象链,并且沿着这个链传递请求,直到有一个接收者处理它为止。通过CHandler类的定义与实现,展示了如何设置后续处理者及处理请求的基本流程。
142

被折叠的 条评论
为什么被折叠?



