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

济南网站建设搜q.479185700互联网媒体平台有哪些

济南网站建设搜q.479185700,互联网媒体平台有哪些,在什么网站可以接活做,免费网站制作作业文章目录 引言责任链模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用日志示例代码地址 引言 在现实生活中#xff0c;常常会遇到这样的场景#xff1a;一个请求或命令需要经过多个层级的处理。例如#xff0c;一个行政审批流程可能需要通过多个部门的审… 文章目录 引言责任链模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用日志示例代码地址 引言 在现实生活中常常会遇到这样的场景一个请求或命令需要经过多个层级的处理。例如一个行政审批流程可能需要通过多个部门的审核。在软件开发中我们可以使用责任链模式来模拟这种层级处理流程。责任链模式允许我们将请求的发送者和接收者解耦将多个处理对象连成一条链依次处理请求。 责任链模式简介 定义与用途 责任链模式Chain of Responsibility Pattern是一种行为设计模式它允许将请求沿着处理链传递直到一个对象处理它为止。每个处理对象都包含逻辑来处理请求或将请求传递给链上的下一个对象。 实现方式 实现责任链模式通常包括以下几个关键组件 处理器接口Handler 定义了处理请求的接口。具体处理器Concrete Handlers 实现处理器接口并执行具体的处理逻辑或将请求传递给链上的下一个处理器。客户端Client 发起请求并将请求传递给链上的第一个处理器。 使用场景 责任链模式适用于以下场景 当多个对象可以处理一个请求但具体由哪个对象处理在运行时才确定时。当想在不明确指定接收者的情况下向多个对象中的一个提交请求时。当处理请求的一组对象应被动态指定时。 例如 审批流程不同级别的审批请求通过不同级别的管理层进行处理。事件处理系统例如 GUI 中的事件传递事件可以由多个对象处理。日志记录根据消息的严重性级别决定将其发送到不同的输出目标。 优势与劣势 优势 降低耦合度请求的发送者和接收者之间没有直接的耦合关系。 增强灵活性可以动态地改变链内的成员或调整其顺序。 易于扩展可以通过增加新的处理器来扩展。劣势 不能保证请求一定会被接收所有处理者都可能不处理请求使其未被处理。 对链中请求处理者的排列顺序和数量敏感。 在Spring框架中的应用 在Spring框架中责任链模式通常用于处理一系列的处理步骤或中间件。这种模式在Spring的多个组件中得到应用最典型的是在Spring Security和Spring MVC中。 1. Spring Security中的责任链应用 在Spring Security中责任链模式体现在过滤器链Filter Chain中。 每个请求都会通过一系列的安全过滤器每个过滤器执行不同的安全检查和任务。这些过滤器包括Authentication Filter负责用户认证。 Authorization Filter负责检查用户是否有权限访问特定资源。 Exception Translation Filter负责处理在安全认证过程中抛出的异常。 每个过滤器处理请求后决定是否将请求传递给链中的下一个过滤器或者是终止请求并返回响应。这正是责任链模式的核心特征。2. Spring MVC中的责任链应用 在Spring MVC中拦截器Interceptors也是一种责任链模式的体现。 拦截器用于在处理请求前后执行各种任务比如日志记录、权限检查、事务处理等。你可以定义多个拦截器并将它们链接在一起形成一个拦截器链。 每个拦截器决定是否在Controller处理请求之前执行某些操作。 在Controller处理完请求后执行某些操作。3. Spring中的Filter Chain Spring的另一个责任链应用是Spring Web中的Filter Chain。在Spring Web中你可以定义多个过滤器来处理Web请求。 每个过滤器执行完任务后可以决定是否将请求传递给链中的下一个过滤器。 这些过滤器可以处理跨站请求伪造CSRF保护、CORS、编码问题等。日志示例 步骤 1创建抽象日志类 首先定义了一个 AbstractLogger 抽象类作为日志处理者的基类。 public abstract class AbstractLogger {public static int INFO 1;public static int DEBUG 2;public static int ERROR 3;protected int level;// 链中的下一个责任元素protected AbstractLogger nextLogger;public void setNextLogger(AbstractLogger nextLogger){this.nextLogger nextLogger;}public void logMessage(int level, String message){if(this.level level){write(message);}if(nextLogger !null){nextLogger.logMessage(level, message);}}abstract protected void write(String message);}这个类定义了日志级别和处理请求的方法。如果此处理者能处理该级别的日志它将输出日志否则它将请求转发给链中的下一个处理者。 步骤 2创建具体的日志处理类 创建了具体的日志处理者类扩展了 AbstractLogger。 public class ConsoleLogger extends AbstractLogger {public ConsoleLogger(int level){this.level level;}Overrideprotected void write(String message) { System.out.println(标准控制台::Logger: message);} }public class ErrorLogger extends AbstractLogger {public ErrorLogger(int level){this.level level;}Overrideprotected void write(String message) { System.out.println(错误控制台::Logger: message);} }public class FileLogger extends AbstractLogger {public FileLogger(int level){this.level level;}Overrideprotected void write(String message) { System.out.println(文件::Logger: message);} }每个具体的处理者类负责处理特定级别的日志消息。 步骤 3创建不同类型的日志处理者并形成链 定义了一个客户端类 ChainPatternDemo 来创建日志处理者链并使用该链处理消息。 public class ChainPatternDemo {private static AbstractLogger getChainOfLoggers(){AbstractLogger errorLogger new ErrorLogger(AbstractLogger.ERROR);AbstractLogger fileLogger new FileLogger(AbstractLogger.DEBUG);AbstractLogger consoleLogger new ConsoleLogger(AbstractLogger.INFO);// 形成责任链errorLogger.setNextLogger(fileLogger);fileLogger.setNextLogger(consoleLogger);return errorLogger; }public static void main(String[] args) {AbstractLogger loggerChain getChainOfLoggers();loggerChain.logMessage(AbstractLogger.INFO, 这是一条信息级别的消息。);loggerChain.logMessage(AbstractLogger.DEBUG, 这是一条调试级别的消息。);loggerChain.logMessage(AbstractLogger.ERROR, 这是一条错误级别的消息。);} } 在这个客户端中我们创建了不同级别的日志处理者并连接它们形成一条链。然后我们发送不同级别的消息给责任链可以看到消息被相应级别的处理者处理。 这个示例演示了责任链模式在处理具有不同处理级别的请求中的效力。通过改变链的结构或成员可以灵活地改变请求处理的方式。 代码地址 23种设计模式相关代码后续会逐步提交到github上方便学习欢迎指点 代码地址 https://github.com/RuofeiSun/lf-23Pattern
http://wiki.neutronadmin.com/news/151276/

相关文章:

  • 网站横幅广告怎么做网站首页设计素材
  • 恋爱ppt模板免费下载网站网页界面设计要中重点掌握
  • 佛山做网站哪家好做一般的公司门户网站投资额
  • 网站优化优化怎么做江苏个人网站备案
  • 如何做公司网站百度推广wordpress调用页面列表
  • 谷歌网站收录提交入口中国互联网站建设中心建站中心
  • 阜城网站建设公司seo发帖网站
  • 建设网站需要什么人员百度收录网站方法
  • 合肥做企业网站的网络公司展示型网站 数据库
  • 网站的ftp地址是什么制作简历的免费网站
  • 网站域名怎么取无锡画室网站建设
  • 哪些网站可以做直播小程序外包公司哪家好
  • php婚庆网站源码软件开发学什么专业好
  • 哪里有免费的网站模板下载 迅雷下载 迅雷下载软件如何向百度提交网站地图
  • 网站编程软件有哪些做网站用什么开发好
  • 湘潭网站建设出色磐石网络网站会员系统方案
  • 微信商城网站方案网站仿制
  • 济南行知网站建设做响应式网站最大宽度
  • 网站平台建设服务承诺书黄山旅游攻略必去景点
  • 网站开发人员职责网站建设的市场定位
  • 360网站托管西安网络科技公司
  • 网站根目录表示在线医疗 网站建设
  • 小企业网站免费建设湛江做网站开发
  • 做片头 网站wordpress如何去除分类
  • 做一个响应式网站价格婚庆租车
  • 洛阳洛龙区网站建设推广手段和渠道有哪些
  • 武强营销型网站建设费用沈阳行业网站建设
  • 湛江cms建站wordpress的自定义菜单图标
  • 个人网站不备案wordpress网站部署
  • 一 网站建设的目的与意义新型互联网项目代理