网站大量收购独家精品文档,联系QQ:2885784924

用责任链模式构筑信息校验组件.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用职责链模式构筑信息校验组件 模式定义 职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。由于英文翻译的不同,职责链模式又称为责任链模式,它是一种对象行为型模式。 模式结构 模式分析 在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。 请求在这个链上传递,直到链上的某一个对象决定处理此请求。 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。 模式代码 public abstract class Handler{ protected Handler successor; public void setSuccessor(Handler successor){ this.successor=successor; } public abstract void handleRequest(String request); } public class ConcreteHandler extends Handler { public void handleRequest(String request){ if(请求request满足条件) { ...... //处理请求; }else{ this.successor.handleRequest(request); //转发请求 } } } 职责链模式实例与解析 场景:最近碰到一个应用场景,服务器需要处理客户端请求的验证,如身份证规则、手机号码规则、地市条件等等。 分析:以固有的思维,处理此类验证往往采用不断的if...else...结构进行处理,对于不同的判断逻辑,采取不同的判断语句块进行处理。这样下来导致代码的可读性不强,各个判断逻辑无法共享,如增加新的规则必须破坏原来的结构,留下系统Bug的风险。 引入原因:引入职责链模式构建验证库,可以将原来绑定的验证规则进行结构,形成独立的校验类,针对客户端的校验请求,系统只需要将校验规则组成职责链,然后将客户端请求在这个校验职责链上传递,知道每个校验完成即可。这样可以方便的增加新的校验规则,有效保证系统的伸缩性。 组件类图: 客户端调用示例: ValidateHandler vCheckType=new ValidateCheckType(); ValidateHandler vCustArea=new ValidateCustArea(); ValidateHandler vMobileNum=new ValidateMobileNum(); vCheckType.setSuccessor(vCustArea); vCustArea.setSuccessor(vMobileNum); return vCheckType.validateRequest(request); ValidateHandler 实现类处理: public abstract class ValidateHandler { protected ValidateHandler successor; /** * 用于校验Request输入指定参数,在子类实现 */ protected abstract String validateRequest(HttpServletRequest request); public ValidateHandler getSuccessor() { return successor; } public void setSuccessor(ValidateHandler successor) { this.successor = successor; } } ValidateCheckType 实现类处理: public class ValidateCheckType extends ValidateHandler { protected String validateRequest(HttpServletRequest request) { // TODO Auto-generated method stub String city = request.ge

文档评论(0)

wuailuo + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档