职责链模式之C++实现


#include  " stdafx.h "
#include <iostream>
using  namespace std;

class Programmer
{
protected:
    Programmer *next;
public:
     void SetNext(Programmer *programmer)
    {
        next = programmer;
    }
     virtual  void ProcessErrorCode( int error) =  0;
};

class ProgrammerA :  public Programmer
{
public:
     void ProcessErrorCode( int error)
    {
         if (error >=  0 && error <  10)
        {
            cout <<  " Error( " << error <<  " ): 错误出现在ProgrammerA的代码 " << endl;
        }
         else
        {
            next->ProcessErrorCode(error);
        }
    }
};

class ProgrammerB :  public Programmer
{
public:
     void ProcessErrorCode( int error)
    {
         if (error >=  10 && error <  20)
        {
            cout <<  " Error( " << error <<  " ): 错误出现在ProgrammerB的代码 " << endl;
        }
         else
        {
            next->ProcessErrorCode(error);
        }
    }
};

class ProgrammerC :  public Programmer
{
public:
     void ProcessErrorCode( int error)
    {
         if (error >=  20 && error <  30)
        {
            cout <<  " Error( " << error <<  " ): 错误出现在ProgrammerC的代码 " << endl;
        }
         else
        {
            cout <<  " Error( " << error <<  " ): 异常:未知错误码 " << endl;
        }
    }
};
int main( void)
{
    Programmer *pProgrammerA =  new ProgrammerA;
    Programmer *pProgrammerB =  new ProgrammerB;
    Programmer *pProgrammerC =  new ProgrammerC;

    pProgrammerA->SetNext(pProgrammerB);
    pProgrammerB->SetNext(pProgrammerC);

     int izError[ 5] = { 56182345};

    cout <<  " ======== 根据错误码定位bug出现的代码段 ======== " << endl;
     for ( int i =  0; i <  5; i++)
    {
        pProgrammerA->ProcessErrorCode(izError[i]);
    }
     return  0;

} 

你可能感兴趣的:(职责链模式)