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

网站建设心得体会范文网站开发宣传方法

网站建设心得体会范文,网站开发宣传方法,怎么做网站网站推广,wordpress图片不加载插件下载文章目录 引言责任链模式简介定义与用途实现方式 使用场景优势与劣势在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://www.tj-hxxt.cn/news/134788.html

相关文章:

  • 网站建设业务怎么开展wordpress jetpack 使用
  • 全球电子商务网站排名phpcms仿行业网站
  • 制作网站可用性监控服装网站目标
  • 路由器设置网站百度推广开户费用标准
  • 重庆免费网站建站模板嘉定南翔网站建设
  • seo网站建设教程南宁网站建设公司排名
  • 河南省建设教育协会网站模版网站是什么意思
  • php网站开发实训总结Wordpress做物联网
  • 备案个人可以做视频网站风格 特别的网站
  • 网站上做相关链接网站内容规划怎么写
  • 成都犀牛网站建设公司找南昌seo服务商
  • 网络推广的途径宁波seo搜索排名优化
  • 网站锚文本的内链建设建立网站需要多少钱?
  • 企业做网站分一般为哪几种类型阿里云wordpress搭建网站
  • 太原市住房和城乡建设部网站wordpress 图片丢失
  • 什么网站做招聘收录好微信的微网站模板下载
  • wordpress文章中出站收录是什么意思
  • 做网站服务器权限设置咨询公司网站设计
  • 做调查挣钱的网站附近做广告的电话
  • 苏州网站设计公司兴田德润好不好建设音乐主题网站
  • dede网站地图html文件贵阳网站建设黔搜
  • 安徽两学一做网站用flash做网站建设
  • 国外平面设计师网站济宁哪里有网站建设
  • 网站301如何做wordpress伪静态路径
  • 网站建设内容大全WordPress广告防屏蔽
  • vs2013网站开发教程湛江市建设交易中心网站
  • 网站浮窗制作网站新闻详细页面设计
  • 手机app设计网站企业网站如何做架构图
  • it 网站模板专业手机网站建设公司
  • 天津建设工程交易中心网站医学ppt模板下载免费