博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA设计模式之责任链模式
阅读量:6262 次
发布时间:2019-06-22

本文共 1252 字,大约阅读时间需要 4 分钟。

今天给大家带来的是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 等 框架中都有应用。
大家的想要灵活的运用,需要在项目实战的中去历练。后续将为大家介绍这种在设计在 项目中实战演练,利于注解配和责任链 搭建的安全校验和变种的责任链模式的运用。
小伙伴,动手试试吧!

转载地址:http://ffkpa.baihongyu.com/

你可能感兴趣的文章
文件上传及下载
查看>>
七、jquery对象的学习,有难度
查看>>
Ajax_数据格式_HTML
查看>>
微信公众账号怎么快速增加粉丝
查看>>
HBase 笔记1
查看>>
loadrunner两个函数:取参数长度和时间戳函数
查看>>
Docker exec与Docker attach
查看>>
解决ssh登录Host key verification failed
查看>>
Java8新特性之二:方法引用
查看>>
记录日常Linux常用软件
查看>>
Jmeter之Bean shell使用(一)
查看>>
[翻译]利用顶点位移的VR畸变校正
查看>>
wp socket tcp链接
查看>>
asp.net 批量下载实现(打包压缩下载)
查看>>
解决了!我滴神哪!MarketPlace为什么手动下载安装部署提示invalid详解
查看>>
主成分分析原理及推导
查看>>
python中获取指定目录下所有文件名列表的程序
查看>>
HTML5的本地存储 LocalStorage
查看>>
safari和ie的时间解析(显示为NAN)
查看>>
基于 HTML5 WebGL 的挖掘机 3D 可视化应用
查看>>