职责链模式

#include "iostream.h"

class CHandle
{
public:
 CHandle(){}
 virtual ~CHandle(){}
public:
 virtual void SetHandle(CHandle *handle){};
 virtual void ProcessHandle(int a){} ;
public:
  CHandle *m_hand;
};

class CHandle1 : public CHandle
{
public:
 CHandle1(){}
  ~CHandle1(){}
public:
 void SetHandle(CHandle *handle){m_hand = handle;}
 void ProcessHandle(int a)
 {
  if (a >= 0  )
  {
   cout<<a<<endl;
  }
  else
  {
   m_hand->ProcessHandle(a);
  }
 }
 
 
};

class CHandle2 : public CHandle
{
public:
 CHandle2(){}
  ~CHandle2(){}
public:
 void SetHandle(CHandle *handle){m_hand = handle;}
 void ProcessHandle(int a)
 {
  if (a >= 10 )
  {
   cout<<a<<endl;
  }
  else
  {
   m_hand->ProcessHandle(a);
  }
 }
 
 
};

void main()
{
  CHandle1 *ha1 = new CHandle1();
  CHandle2 *ha2 = new CHandle2();
  ha1->SetHandle(ha2);

  ha1->ProcessHandle(10);
}

原文地址:https://www.cnblogs.com/lizhengjin/p/1282980.html