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

为什么网站不见了个人网页设计界面

为什么网站不见了,个人网页设计界面,网站更改建设方案模板,做网站制作软件定义 责任链模式#xff08;Chain Of Responsibility Pattern#xff09;顾名思义#xff0c;就是为请求创建一条处理链路#xff0c;链路上的每个处理器都判断是否可以处理请求#xff0c;如果不能处理则往后走#xff0c;依次从链头走到链尾#xff0c;直到有处理器可…定义 责任链模式Chain Of Responsibility Pattern顾名思义就是为请求创建一条处理链路链路上的每个处理器都判断是否可以处理请求如果不能处理则往后走依次从链头走到链尾直到有处理器可以处理请求。类型 2.1 请求只处理一次 每个节点都有机会处理请求但是请求只要处理成功就结束了。 场景 流程审批、扑克牌 代码示例 原来 public class Apply {public boolean apply(int requireDay) {if (requireDay 1) {return true;} else if (requireDay 3) {applyByLeader(requireDay);} else {applyByManager(requireDay);}}public boolean applyByLeader(int requireDay) {//...}public boolean applyByManager(int requireDay) {//...} }改造后 BaseHandler.java public abstract class BaseHandler {protected BaseHandler successor;public void setSuccessor(BaseHandler successor) {this.successor successor;}public abstract boolean apply(int requireDay);public void print() {System.out.println(this.getClass().getSimpleName() process.);} }AutoHandler.java public class AutoHandler extends BaseHandler {Overridepublic boolean apply(int requireDay) {super.print();if (requireDay 1) {return true;}return successor.apply(requireDay);} }LeaderHandler.java public class LeaderHandler extends BaseHandler {Overridepublic boolean apply(int requireDay) {super.print();if (requireDay 3) {return true;}return successor.apply(requireDay);} }ManagerHandler.java public class ManagerHandler extends BaseHandler {private static final int MAX_DAY 996;Overridepublic boolean apply(int requireDay) {super.print();return requireDay MAX_DAY;} }HandlerClient.java public class HandlerClient {private static final AutoHandler AUTO_HANDLER;static {ManagerHandler managerHandler new ManagerHandler();LeaderHandler leaderHandler new LeaderHandler();leaderHandler.setSuccessor(managerHandler);AUTO_HANDLER new AutoHandler();AUTO_HANDLER.setSuccessor(leaderHandler);}public static void main(String[] args) {AUTO_HANDLER.apply(1);System.out.println();AUTO_HANDLER.apply(3);System.out.println();AUTO_HANDLER.apply(5);} }输出 AutoHandler process. AutoHandler process. LeaderHandler process. AutoHandler process. LeaderHandler process. ManagerHandler process.2.2 请求处理多次 每个节点都有机会处理请求节点处理完之后继续往后走直到链尾。 场景 • 过滤器 / 拦截器 • JavaEE 的 Servlet 规范定义的 Filter 代码示例 请求如果成功通过 process 处理则进入下一个 process如果不通过则被过滤掉这里不再累述代码。 3. 项目实践 有个根据配置构造ODPS查询语句的代码配置片段如下 {name: Document no,code: service_order_code,isBasicField: true,fromRerating: false,classType: java.lang.String }原来是通过 if-else 来实现的代码如下所示 现在要新增非空校验的字段 notNull现在配置如下 {name: Document no,code: service_order_code,isBasicField: true,fromRerating: false,classType: java.lang.String,notNull: true }发现又得往 if-else 里面硬塞分支有代码洁癖的我怎么能容忍自己写这种代码最近也从同事那里了解到责任链模式的厉害之处索性直接给它优化掉这里我截取下关键代码片段。 首先声明抽象处理类 /*** 责任链抽象处理器*/ public abstract class AbstractHandlerT, V {protected AbstractHandlerT, V successor;public void setSuccessor(AbstractHandlerT, V handler) {this.successor handler;}/*** 处理方法** param context 上下文* return R*/public abstract String process(ContextT, V context); }各具体处理类安排上 /*** 责任链入口扩展字段处理*/ public class FirstExtendFieldHandler extends AbstractHandlerAdjustmentTemplateDTO, String {/*** 处理方法** param context 上下文* return R*/Overridepublic String process(ContextAdjustmentTemplateDTO, String context) {AdjustmentTemplateDTO request context.getRequest();if (!request.getBasicField()) {String tmpField request.getFromRerating() ? String.format(GET_JSON_OBJECT, NEW_PARAM, PREFIX request.getCode()) :String.format(GET_JSON_OBJECT, OLD_PARAM, PREFIX request.getCode());context.setResult(tmpField);}return successor.process(context);} } /*** 非空字段处理器*/ public class SecondNotNullFieldHandler extends AbstractHandlerAdjustmentTemplateDTO, String {/*** 处理方法** param context 上下文* return R*/Overridepublic String process(ContextAdjustmentTemplateDTO, String context) {AdjustmentTemplateDTO request context.getRequest();if (!request.getBasicField()) {return successor.process(context);}if (request.getNotNull() null || !request.getNotNull()) {String tmpField (request.getFromRerating() ? NEW : OLD) request.getCode();context.setResult(tmpField);return successor.process(context);} else {String oldValue OLD request.getCode();context.setResult(oldValue);oldValue successor.process(context);String newValue NEW request.getCode();context.setResult(newValue);newValue successor.process(context);String finalField String.format(OdpsConstants.IF, oldValue, newValue, oldValue);context.setResult(finalField);return finalField;}} }/*** 时间字段处理*/ public class ThirdTimeFormatHandler extends AbstractHandlerAdjustmentTemplateDTO, String {Overridepublic String process(ContextAdjustmentTemplateDTO, String context) {AdjustmentTemplateDTO request context.getRequest();String finalSql StringUtils.isNotBlank(request.getTimeFormat())? String.format(TIMESTAMP_FORMAT, context.getResult(), request.getTimeFormat()): context.getResult();context.setResult(finalSql);return finalSql;} }最后是负责初始化责任链的客户端 /*** 责任链客户端*/ public class HandlerChainClient {private static final FirstExtendFieldHandler FIRST_HANDLER;static {ThirdTimeFormatHandler thirdHandler new ThirdTimeFormatHandler();SecondNotNullFieldHandler secondHandler new SecondNotNullFieldHandler();secondHandler.setSuccessor(thirdHandler);FIRST_HANDLER new FirstExtendFieldHandler();FIRST_HANDLER.setSuccessor(secondHandler);}/*** 调用责任链进行处理** param request 请求参数* return result*/public static String process(AdjustmentTemplateDTO request) {AdjustmentContext context new AdjustmentContext();context.setRequest(request);return FIRST_HANDLER.process(context);} }最后业务代码里又臭又长的 if-else 变成了一行代码。 HandlerChainClient.process(request);优点 • 解耦。请求发送者无需知道请求在何时、何处以及如何被处理实现了发送者与处理者的解耦。 • 灵活、可插拔。可以看到想要添加一个处理流程只需实现BaseHandler然后注入到对应的位置即可删除一个流程也是一样只需要将本节点的位置替换成下一个节点即可客户端无需感知处理器的变化。 • 代码优雅责任链相比 if-else 是更加优雅的。缺点 • 类的数量变多了组链时要注意避免出现环状结构导致出现死循环。
http://www.hkea.cn/news/14438646/

相关文章:

  • 视觉中国网站企业网盘解决方案
  • 企业网站空间抖音开放平台官网入口
  • 做一个京东网站怎么做兰州网站建设lzwlxc
  • 成绩分析智能网站怎么做学校网站要更新应怎么做
  • 张家港市凤凰镇建设局网站wordpress图片储存到七牛云
  • 做电商网站需要会些什么织梦m网站伪静态
  • 大学物流仓储作业代做网站给图像做标注的网站
  • 广州设计公司网站网站建设全包广州
  • 小型网站建设上海大学生做网站的团队
  • 网站建设策划师舒肤佳网络营销方案
  • 网站被百度删除的原因国外网站网站app
  • 网站与网页的关系网站建设员性质
  • 网站空间到期时间查询淮安网站建设要多少钱
  • 网站备案备的是域名还是空间然后制作网页
  • seo网站推广专员招聘品牌建设 奖
  • 购物网站建设与开发wordpress电影下载站
  • 网站开发工作室创新的沈阳网站建设
  • 搞笑视频素材网站免费北京做网站的价格
  • 网站维护需要会什么高端网站建设公司怎么选
  • 看电视剧的免费网站大全郑州做网站要
  • 网站设计与建设考试做算命类网站违法吗?
  • 沧州网站建设的集成商comsenzexp wordpress
  • 不备案的网站可以做竞价吗深圳专业做网页的公司
  • 免费p2p网站建设论坛推广的步骤
  • 黄埔网站建设(信科网络)用vs2008做网站教程
  • 网站怎么制作的90后做网站月入万元
  • 建设银行网站电脑上不去sqlite3做网站数据库
  • 免费收录网站推广有没有帮人做机械设计的网站
  • 网站架构是什么岳阳网
  • 跨境电商网站建设主管岗位职责手机网站开发 html