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

邵武网站建设大气学校网站模板

邵武网站建设,大气学校网站模板,台州免费自助建站模板,站长之家域名ip查询经典的设计模式有23种#xff0c;但是常用的设计模式一般情况下不会到一半#xff0c;我们就针对一些常用的设计模式进行一些详细的讲解和分析#xff0c;方便大家更加容易理解和使用设计模式。 1-原理和实现 职责链模式的英文翻译是Chain Of Responsibility Design Patter…       经典的设计模式有23种但是常用的设计模式一般情况下不会到一半我们就针对一些常用的设计模式进行一些详细的讲解和分析方便大家更加容易理解和使用设计模式。 1-原理和实现 职责链模式的英文翻译是Chain Of Responsibility Design Pattern。在GoF的《设计模式》中它是这么定义的        Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.        翻译成中文就是将请求的发送和接收解耦让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链并沿着这条链传递这个请求直到链上的某个接收对象能够处理它为止。 在职责链模式中多个处理器也就是刚刚定义中说的“接收对象”依次处理同一个请求。一个请求先经过A处理器处理然后再把请求传递给B处理器B处理器处理完后再传递给C处理器以此类推形成一个链条。链条上的每个处理器各自承担各自的处理职责所以叫作职责链模式。比如我们经常碰到的Servlet Filter、Spring Interceptor都是这种模式。 在GoF给出的定义中如果处理器链上的某个处理器能够处理这个请求那就不会继续往下传递请求。实际上职责链模式还有一种变体那就是请求会被所有的处理器都处理一遍不存在中途终止的情况。这种变体也有两种实现方式用链表存储处理器和用数组存储处理器。 public abstract class Handler {protected Handler successor null;public void setSuccessor(Handler successor) {this.successor successor;}public final void handle() {doHandle();if (successor ! null) {successor.handle();}}protected abstract void doHandle(); }public class HandlerA extends Handler {Overrideprotected void doHandle() {//...} }public class HandlerB extends Handler {Overrideprotected void doHandle() {//...} }public class HandlerChain {private Handler head null;private Handler tail null;public void addHandler(Handler handler) {handler.setSuccessor(null);if (head null) {head handler;tail handler;return;}tail.setSuccessor(handler);tail handler;}public void handle() {if (head ! null) {head.handle();}} }// 使用举例 public class Application {public static void main(String[] args) {HandlerChain chain new HandlerChain();chain.addHandler(new HandlerA());chain.addHandler(new HandlerB());chain.handle();} } 2-职责链模式的应用场景示例 需求针对用户发表帖子内容判断是否含有敏感词。对于包含敏感词的内容我们有两种处理方式一种是直接禁止发布另一种是给敏感词打马赛克比如用***替换敏感词之后再发布。第一种处理方式符合GoF给出的职责链模式的定义第二种处理方式是职责链模式的变体。 public interface SensitiveWordFilter {boolean doFilter(Content content); }public class SexyWordFilter implements SensitiveWordFilter {Overridepublic boolean doFilter(Content content) {boolean legal true;//...return legal;} }// PoliticalWordFilter、AdsWordFilter类代码结构与SexyWordFilter类似public class SensitiveWordFilterChain {private ListSensitiveWordFilter filters new ArrayList();public void addFilter(SensitiveWordFilter filter) {this.filters.add(filter);}// return true if content doesnt contain sensitive words.public boolean filter(Content content) {for (SensitiveWordFilter filter : filters) {if (!filter.doFilter(content)) {return false;}}return true;} }public class ApplicationDemo {public static void main(String[] args) {SensitiveWordFilterChain filterChain new SensitiveWordFilterChain();filterChain.addFilter(new AdsWordFilter());filterChain.addFilter(new SexyWordFilter());filterChain.addFilter(new PoliticalWordFilter());boolean legal filterChain.filter(new Content());if (!legal) {// 不发表} else {// 发表}} } 首先我们来看职责链模式如何应对代码的复杂性。 将大块代码逻辑拆分成函数将大类拆分成小类是应对代码复杂性的常用方法。应用职责链模式我们把各个敏感词过滤函数继续拆分出来设计成独立的类进一步简化了SensitiveWordFilter类让SensitiveWordFilter类的代码不会过多过复杂。 其次我们再来看职责链模式如何让代码满足开闭原则提高代码的扩展性。 当我们要扩展新的过滤算法的时候比如我们还需要过滤特殊符号只需要新添加一个Filter类并且通过addFilter()函数将它添加到FilterChain中即可其他代码完全不需要修改。假设敏感词过滤框架并不是我们开发维护的而是我们引入的一个第三方框架我们要扩展一个新的过滤算法不可能直接去修改框架的源码。这个时候利用职责链模式就能达到开篇所说的在不修改框架源码的情况下基于职责链模式提供的扩展点来扩展新的功能。换句话说我们在框架这个代码范围内实现了开闭原则。除此之外利用职责链模式相对于不用职责链的实现方式还有一个好处那就是配置过滤算法更加灵活可以只选择使用某几个过滤算法。
http://www.zqtcl.cn/news/45914/

相关文章:

  • 影响网站速度的代码北京市建设工程信息网招标
  • 一个人网站运营怎么做wordpress oss官方
  • 响应式网站建设费用html网页开发
  • 怎么做网站策划找设计师的网站
  • 建设企业网站都需要啥网站建设与管理个人职业生涯规划书
  • 网站开发的流行架构wordpress文件下载页面
  • 上海哪里做网站比较好硬件开发语言
  • 如何做网站商铺网站建设与软件开发哪个好赚钱
  • 自适应网站模板建站网站建设技术解决方案
  • 备案期间的网站打开河源和平县建设局网站
  • 万维网网站wordpress首页flash
  • 昆明网站快照优化公司线上卖护肤品营销方法
  • 通江县建设局网站网站接入查询
  • 建设网站的具体步骤是什么一键做单页网站
  • 网站 邮箱功能 设置彩票网站链接怎么做
  • 铜川市建设集团网站免费建站建站
  • 河北省城乡住房和建设厅网站新浪网页游戏辅助
  • 网站短信验证码接口怎么做钦州房产网站建设
  • 网站外包如何报价广州网站优化推广
  • 椒江做网站学室内设计需要什么条件
  • 永嘉县住房建设局网站北京网站设计联系电话
  • 成化区建设局网站纵横网站
  • 东营seo整站优化济南品牌网站建设价格低
  • 营销网站建设大概费用网页设计与网站建设 pdf
  • 工信部企业网站备案吗深圳做网站的公司排行
  • 长春市做网站wordpress+程序优化
  • 如何建单位内部购物网站wordpress 免费主题
  • 单色系网站设计有哪些wordpress 多主题共存
  • 网站建设服务流程ppt模板下载免费版软件
  • 公司自建网站多媒体技术和网页设计题库