栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

责任链模式

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

责任链模式

责任链模式 概念

责任链模式(Chain of Responsibility, COR)是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连。

适用于:

链条式处理事情。工作流程化、消息处理流程化、事物流程化

优点:

1。责任的分担。每个类只需要处理自己该处理的工作(不该处理的传递给下一个对象完成),明确各类的责任范围,符合类的最小封装原则。

2。可以根据需要自由组合工作流程。如工作流程发生变化,可以通过重新分配对象链便可适应新的工作流程。

3。类与类之间可以以松耦合的形式加以组织。

缺点:

因为处理时以链的形式在对象间传递消息,根据实现方式不同,有可能会影响处理的速度。

结构图

简单实现

类似于链表,有一个后继指针。通过递归进行遍历。

#include

using namespace std;

class Handler{
public:
	virtual void HandleRequest()=0;
	void setNext(Handler* handle){
		next=handle;
	}
protected:
	Handler* next;
};

class ConcreteHandler_A: public Handler{
public:
	void HandleRequest(){
		cout<<"ConcreteHandler_A"<HandleRequest();
	}
};

class ConcreteHandler_B: public Handler{
public:
	void HandleRequest(){
		cout<<"ConcreteHandler_B"<HandleRequest();
	}
};

class ConcreteHandler_C: public Handler{
public:
	void HandleRequest(){
		cout<<"ConcreteHandler_C"<HandleRequest();
	}
};

int main(){
	Handler *handle1=new ConcreteHandler_A();
	Handler *handle2=new ConcreteHandler_B();
	Handler *handle3=new ConcreteHandler_C();
	
	handle1->setNext(handle2);
	handle2->setNext(handle3);
	handle3->setNext(NULL);
	
	handle1->HandleRequest();
	
	delete handle3;
	delete handle2;
	delete handle1;
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/979630.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号