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

网站优化建设扬州专业的微网站哪家好

网站优化建设扬州,专业的微网站哪家好,域名申请到网站建设教程,建e室内设计网如何切换账号文章目录 一、责任链模式定义二、例子2.1 菜鸟教程2.1.1 定义一个抽象日志类2.1.2 定义日志类的具体实现类ConsoleLogger 、ErrorLogger 、FileLogger2.1.3 将日志类串起来#xff0c;并使用 2.2 JDK源码——Filter2.3 Spring源码——HandlerInterceptor 三、其他设计模式 一、… 文章目录 一、责任链模式定义二、例子2.1 菜鸟教程2.1.1 定义一个抽象日志类2.1.2 定义日志类的具体实现类ConsoleLogger 、ErrorLogger 、FileLogger2.1.3 将日志类串起来并使用 2.2 JDK源码——Filter2.3 Spring源码——HandlerInterceptor 三、其他设计模式 一、责任链模式定义 类型 行为型模式 每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求那么它会把相同的请求传给下一个接收者依此类推。 目的 职责链上的处理者负责处理请求客户只需要将请求发送到职责链上即可无须关心请求的处理细节和请求的传递所以职责链将请求的发送者和请求的处理者解耦了。 个人理解上面菜鸟教程说职责链将发送者和请求的处理者解耦但个人觉得职责链更多的是将多个责任解耦使用时将所需要的责任组织成责任链。 二、例子 2.1 菜鸟教程 菜鸟教程是以一个日志类为例子。 2.1.1 定义一个抽象日志类 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.1.2 定义日志类的具体实现类ConsoleLogger 、ErrorLogger 、FileLogger public class ConsoleLogger extends AbstractLogger {public ConsoleLogger(int level){this.level level;}Overrideprotected void write(String message) { System.out.println(Standard Console::Logger: message);} }public class ErrorLogger extends AbstractLogger {public ErrorLogger(int level){this.level level;}Overrideprotected void write(String message) { System.out.println(Error Console::Logger: message);} }public class FileLogger extends AbstractLogger {public FileLogger(int level){this.level level;}Overrideprotected void write(String message) { System.out.println(File::Logger: message);} }2.1.3 将日志类串起来并使用 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, This is an information.);loggerChain.logMessage(AbstractLogger.DEBUG, This is a debug level information.);loggerChain.logMessage(AbstractLogger.ERROR, This is an error information.);} }2.2 JDK源码——Filter public interface Filter {default void init(FilterConfig filterConfig) throws ServletException {}void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;default void destroy() {} } 2.3 Spring源码——HandlerInterceptor public interface HandlerInterceptor {default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;}default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, Nullable ModelAndView modelAndView) throws Exception {}default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Nullable Exception ex) throws Exception {} } public class HandlerExecutionChain {Nullableprivate HandlerInterceptor[] interceptors;boolean applyPreHandle(HttpServletRequest request, HttpServletResponse response) throws Exception {HandlerInterceptor[] interceptors getInterceptors();if (!ObjectUtils.isEmpty(interceptors)) {for (int i 0; i interceptors.length; i) {HandlerInterceptor interceptor interceptors[i];if (!interceptor.preHandle(request, response, this.handler)) {triggerAfterCompletion(request, response, null);return false;}this.interceptorIndex i;}}return true;}void applyPostHandle(HttpServletRequest request, HttpServletResponse response, Nullable ModelAndView mv) throws Exception {HandlerInterceptor[] interceptors getInterceptors();if (!ObjectUtils.isEmpty(interceptors)) {for (int i interceptors.length - 1; i 0; i--) {HandlerInterceptor interceptor interceptors[i];interceptor.postHandle(request, response, this.handler, mv);}}}void triggerAfterCompletion(HttpServletRequest request, HttpServletResponse response, Nullable Exception ex)throws Exception {HandlerInterceptor[] interceptors getInterceptors();if (!ObjectUtils.isEmpty(interceptors)) {for (int i this.interceptorIndex; i 0; i--) {HandlerInterceptor interceptor interceptors[i];try {interceptor.afterCompletion(request, response, this.handler, ex);}catch (Throwable ex2) {logger.error(HandlerInterceptor.afterCompletion threw exception, ex2);}}}} } 三、其他设计模式 创建型模式 结构型模式 1、设计模式——装饰器模式Decorator Pattern Spring相关源码 行为型模式 1、设计模式——访问者模式Visitor Pattern Spring相关源码2、设计模式——中介者模式Mediator Pattern JDK相关源码3、设计模式——策略模式Strategy Pattern Spring相关源码4、设计模式——状态模式State Pattern5、设计模式——观察者模式Observer Pattern Spring相关源码6、设计模式——备忘录模式Memento Pattern7、设计模式——模板方法模式Template Pattern Spring相关源码8、设计模式——迭代器模式Iterator Pattern Spring相关源码
http://www.w-s-a.com/news/221763/

相关文章:

  • 网站建设费税率是多少项目备案信息查询
  • 网站开发php有哪些权威发布型舆情回应
  • 凡科建站有哪些弊端百度手机怎么刷排名多少钱
  • 南山网站公司在招聘网站做销售工资高吗
  • 百度联盟怎么加入赚钱合肥seo按天收费
  • 网站建设与用户需求分析加盟店排行榜加盟项目排行榜
  • 柳州市诚信体系建设网站wordpress建手机网站吗
  • 网站策划书是什么水产公司网站源码
  • 温州做网站多少钱网站服务器机房
  • 网站公司设计 网站首页什么网站专门做图片
  • 书店网站怎么做网站点击快速排名
  • 太阳镜商城网站建设公司做网站
  • 如何制作个人作品网站宣传片拍摄合同
  • 关于微网站策划ppt怎么做做插画的网站
  • 做设计网上揽活哪个网站最好中企动力算大厂吗
  • 电子商务网站开发常用工具牡丹江吧
  • 四川成都网站制作公司wordpress 获取某个分类的文章
  • wordpress 编辑器推动门户网站建设不断优化升级
  • 做游戏网站的前景温江区建设局网站
  • 济南做微网站推广做网站seo优化总结
  • 巢湖网站建设电话长沙大型互联网公司
  • wordpress站群主机海南人
  • 云南网站建设维护商业网站建设教程
  • 云南省滇中引水工程建设管理局网站jsp个人网站设计
  • 网站建设 域名业务 邮箱互联网装饰网站
  • 建设厅技工在哪个网站上查询有了网站模板 还要怎样做
  • 城市联盟网站怎么做百度云网站建设视频教程
  • 织梦cms 官方网站网页视频如何下载到电脑
  • 查询建设公司业绩网站国外外链平台
  • 搭建直播网站需要怎么做做石材网站步骤