当前位置: 首页 > news >正文

互联网网站开发合同教育培训机构平台

互联网网站开发合同,教育培训机构平台,wordpress移除仪表盘,宁波网站建设制作推广摘要 责任链模式(Chain of responsibility pattern): 通过责任链模式, 你可以为某个请求创建一个对象链. 每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象。 一、责任链模式意图 职责链模式(Chain Of Responsibility) 是一种行为设…

摘要

责任链模式(Chain of responsibility pattern): 通过责任链模式, 你可以为某个请求创建一个对象链. 每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象。

一、责任链模式意图

职责链模式(Chain Of Responsibility) 是一种行为设计模式, 允许你将请求沿着处理者链进行发送。 收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。

使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

二、责任链模式场景

  • 当程序需要使用不同方式处理不同种类请求, 而且请求类型和顺序预先未知时,可以使用责任链模式。
  • 当必须按顺序执行多个处理者时, 可以使用该模式。
  • 如果所需处理者及其顺序必须在运行时进行改变, 可以使用责任链模式。

三、责任链模式类图

  1. 处理者 (Handler) 声明了所有具体处理者的通用接口。 该接口通常仅包含单个方法用于请求处理, 但有时其还会包含一个设置链上下个处理者的方法。

  2. 基础处理者 (Base Handler) 是一个可选的类, 你可以将所有处理者共用的样本代码放置在其中。

    通常情况下, 该类中定义了一个保存对于下个处理者引用的成员变量。 客户端可通过将处理者传递给上个处理者的构造函数或设定方法来创建链。 该类还可以实现默认的处理行为: 确定下个处理者存在后再将请求传递给它。

  3. 具体处理者 (Concrete Handlers) 包含处理请求的实际代码。 每个处理者接收到请求后, 都必须决定是否进行处理, 以及是否沿着链传递请求。

    处理者通常是独立且不可变的, 需要通过构造函数一次性地获得所有必要地数据。

  4. 客户端 (Client) 可根据程序逻辑一次性或者动态地生成链。 值得注意的是, 请求可发送给链上的任意一个处理者, 而非必须是第一个处理者。

四、责任链模式实现

public abstract class Handler {protected Handler successor;public Handler(Handler successor) {this.successor = successor;}protected abstract void handleRequest(Request request);
}
public class ConcreteHandler1 extends Handler {public ConcreteHandler1(Handler successor) {super(successor);}@Overrideprotected void handleRequest(Request request) {if (request.getType() == RequestType.type1) {System.out.println(request.getName() + " is handle by ConcreteHandler1");return;}if (successor != null) {successor.handleRequest(request);}}
}
public class ConcreteHandler2 extends Handler{public ConcreteHandler2(Handler successor) {super(successor);}@Overrideprotected void handleRequest(Request request) {if (request.getType() == RequestType.type2) {System.out.println(request.getName() + " is handle by ConcreteHandler2");return;}if (successor != null) {successor.handleRequest(request);}}
}
public class Request {private RequestType type;private String name;public Request(RequestType type, String name) {this.type = type;this.name = name;}public RequestType getType() {return type;}public String getName() {return name;}
}
public enum RequestType {type1, type2
}
public class Client {public static void main(String[] args) {Handler handler1 = new ConcreteHandler1(null);Handler handler2 = new ConcreteHandler2(handler1);Request request1 = new Request(RequestType.type1, "request1");handler2.handleRequest(request1);Request request2 = new Request(RequestType.type2, "request2");handler2.handleRequest(request2);}
}

五、责任链模式总结

责任链模式、命令模式、中介者模式和观察者模式都是用于处理请求发送者和接收者之间的不同连接方式:

  • 责任链按照顺序将请求动态传递给一系列的潜在接收者, 直至其中一名接收者对请求进行处理。
  • 命令在发送者和请求者之间建立单向连接。
  • 中介者清除了发送者和请求者之间的直接连接, 强制它们通过一个中介对象进行间接沟通。
  • 观察者允许接收者动态地订阅或取消接收请求。

责任链模式通常与组合模式结合使用。 在这种情况下, 叶子组件接收到请求后, 可以将请求沿包含全体父组件的链一直传递至对象树的底部。

责任链模式使用命令模式实现,在这种情况下, 你可以对由请求代表的同一个上下文对象执行许多不同的操作。还有另外一种实现方式, 那就是请求自身就是一个命令对象。 在这种情况下, 你可以对由一系列不同上下文连接而成的链执行相同的操作。

责任链与装饰器模式类结构非常相似。 两者都依赖递归组合将需要执行的操作传递给一系列对象。 但是, 两者有几点重要的不同之处。责任链管理者可以相互独立地执行一切操作, 还可以随时停止传递请求。 另一方面, 各种装饰可以在遵循基本接口的情况下扩展对象的行为。 此外, 装饰无法中断请求的传递。

六、责任链模式开源示例

使用示例: 责任链模式在 Java 程序中并不常见, 因为它仅在代码与对象链打交道时才能发挥作用。该模式最流行的使用案例之一是在 GUI 类中将事件向上传递给父组件。 另一个值得注意的使用案例是依次访问过滤器。

下面是该模式在核心 Java 程序库中的一些示例:

  • javax.servlet.Filter#doFilter()(opens new window)
  • java.util.logging.Logger#log()(opens new window)

识别方法: 该模式可通过一组对象的行为方法间接调用其他对象的相同方法来识别, 而且所有对象都会遵循相同的接口。

博文参考

行为型 - 责任链(Chain Of Responsibility) | Java 全栈知识体系

设计模式之职责链模式 | DESIGN

http://www.khdw.cn/news/22304.html

相关文章:

  • 无锡网站制作哪家好网络营销主要做些什么
  • 品牌建设营销佛山外贸seo
  • 企业网站如何做seo搜什么关键词比较刺激
  • dwcs5怎么做动态网站网站推广服务
  • 做影视网站能赚到钱吗宁波网络营销公司
  • 大型网站建设方案抖音搜索seo软件
  • 微商软件东莞seo网站排名优化公司
  • 衡阳做网站公司那个推广平台好用
  • 怎么做时时彩网站平台怎么提成自助建站平台源码
  • 福州网站建设服务价格最实惠seo搜索排名优化
  • 资源网盘链接承德seo
  • 网络营销的职能是什么?seo如何提高排名
  • 推销别人做网站有什么作用想学编程去哪里找培训班
  • 假网站是怎么做的seo代码优化包括哪些
  • 做视频网站许可证适合网络营销的产品
  • 什么是cms网站系统sem管理工具
  • 公司注册公司代理网站优化seo是什么
  • 北京高端网站制作长沙百度网站推广公司
  • 最新网站网址永久发布惠州百度关键词优化
  • 珠海门户网站建设价格广州网站优化多少钱
  • 酷酷123网址之家宁波seo快速优化公司
  • 北京市建设工程质监站网站关键字优化用什么系统
  • web网站开发的书籍新闻头条最新消息10条
  • 包头建设局网站百度贴吧网页入口
  • 番禺做网站网站技术外包公司
  • crm系统管理淘宝seo推广优化
  • 聊城seo整站优化报价深圳推广公司介绍
  • 装修公司网站用的织梦淘宝流量平台
  • 建设网站是哪个部门负责保定关键词排名推广
  • 儿童教育类网站模板下载教育机构退费纠纷找谁