设计模式-行为-Chain of Responsibility(责任链)模式

梦想游戏人
目录:
软件架构

责任链把处理请求的对象 连接为一个链,逐级传递,直到有对象处理该请求。

#include "PublicHeaders.h"
#pragma once


class Request
{
public:

	virtual int GetType()
	{
		return this->_type;
	}


	Request(int t)
	{
		this->_type = t;
	}
private:
	int _type;

};

class Handler
{
public:
	virtual void HandleRequest(Request*request) = 0;
	void setSuccessor(Handler *s)
	{
		this->successor = s;
	}

protected:
	Handler *successor = nullptr;
 
};



class HandlerA :public Handler
{
public:

	virtual void HandleRequest(Request*request)override
	{
		if (request->GetType() == 0)
		{
			cout << "do request success in " << __FUNCTION__ << endl;
			return;
		}
		if (successor)
		{
			successor->HandleRequest(request);
		}

	}
};

class HandlerB :public Handler
{
public:
public:

	virtual void HandleRequest(Request*request)override
	{
		if (request->GetType() == 1)
		{
			cout << "do request success in " << __FUNCTION__ << endl;
			return;
		}
		if (successor)
		{
			successor->HandleRequest(request);
		}

	}
};




void testChain()
{

	Handler *ha = new HandlerA;
	Handler*hb = new HandlerB;
	ha->setSuccessor(hb);

	Request *re = new Request(0);

	ha->HandleRequest(re);

}
Scroll Up