JAVA设计模式_责任链模式

来源:互联网 发布:自动脱壳软件 编辑:程序博客网 时间:2024/06/11 02:53
今天给大家带来的是JAVA的设计模式。
有人会问:什么是JAVA? 什么又是设计模式呢?
勇敢老师最喜欢的一句话: JAVA是内功,设计模式是格斗招式,当只有内功,那么再好的内功也只是蛮力,只有格斗招式,那么也就成了花拳绣腿。
如何把握两者?

   一句话 具体情况具体分析。
   
   那么今天给大家带来的JAVA常用的设计模式之一:职责链模式(责任链模式)
   首先简单地认识下 我们的是小伙伴 职责链。
   
   职责链模式[Chain of Responsibility]:
    责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。
   请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,
   这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。(概念解释来源于:阎宏博士的《JAVA与模式》)
   
   
  很多伙伴们可能对这段该概念很少模糊, 简单说明下:当某一个业务对象需要完成 任务A B C D 。。。 等多个任务的时候,那么处理方法是就将任务先交给 A ,待完成后再教于B .... 依次下去。

  责任链:任务处理对象
  
 


当如任务分配到到责任链上时候,就会出现这样的优势局面
 

  1. 责任的分担。每个类只需要处理自己该处理的工作(不该处理的传递给下一个对象完成),明确各类的责任范围,符合类的最小封装原则。
  2. 可以根据需要自由组合工作流程。如工作流程发生变化,可以通过重新分配对象链便可适应新的工作流程。
  3. 类与类之间可以以松耦合的形式加以组织。
 
当然也出了不利的局面:在处理多任务是以链的模式实现对象的传递,不同的实现方式会影响处理响应的速度。
 
我们简单的任务认识了下 责任链的概念,接下来我们一起码代码,感受下代码的艺术。
 
我们基于JAVA语言的实现的简单的责任链。
场景: 设计模拟商场打折,导购员只能 提供 100元以内的优惠 经理提供500元以内的优惠。
 
目标: 1. 设计一个抽象处理类 AbstractHandlerChain
要求:第一. 持有当前对象的引用
      第二.提供当前对象的获取
      第三.共同的业务处理方法
      第四.下一个对象传递
       
2.两个业务处理对象 继承 AbstractHandlerChain
 
项目结构 如图
 
 
 

 
 
设计两个业务处理对象  导购员(HandlerChainSales)   
经  理()   都继承处理责任链。
 


 
 
 
经理设计
 


 
对象创建工厂

 




结果:
 
 
 
简单的结构示意图
 
 

 
 
小结: 小伙伴们 今天你们学会了吗? 今天主要给大家介绍认识下我们的责任链模式,实际的运行场景非常的广泛,如 filter 拦截 ,servlet,Servlet Engine启动,tomcat服务器,  springmvc spring 等 框架中都有应用。
同学的想要灵活的运用,需要在项目实战的中去历练。后续将为大家介绍这种在设计在 项目中实战演练,利于注解配和责任链 搭建的安全校验和变种的责任链模式的运用。(上海尚学堂java培训原创,请多多关注,后续java相关技术文章奉上!)
 
小伙伴,动手试试吧!