本文实例讲述了Java责任链模式定义与用法。分享给大家供大家参考,具体如下:

使很多对象都有处理请求的机会,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止
责任链模式主要包括以下几个角色
1、处理者:处理者是一个接口,负责规定具体处理者处理用户请求的方法以及具体处理者设置后继处理对象的方法
2、具体处理者:具体处理者是实现处理接口的类的实例,具体处理者通过调用处理接口规定的方法处理用户的请求,既在接到用户的请求后,处理者将调用接口规定的方法,在执行该方法的过程中,如果发现能处理用户的请求,就处理用户的请求。如果发现处理不了就交给下一个处理者进行处理。
例如一个图书检索的程序,根据图书类别将图书分为了N个种类,然后创建若干个种类的对象,每个对象对一个种类进行检索。为了能更好的管理这些对象,可以将这额对象组织成一个责任链,当用户需要鉴定书籍时,系统可以让责任链上的第一个对象来处理用户的请求,这个对象首先检索自己是否能够处理用户的请求,如果能处理就反馈并返回处理内容。如果不能处理则交给下一个处理对象进行处理。
package org.zhy.design.demo;
/**
* 处理接口
* @author zhengyi
*
*/
public interface Handler {
//根据书的ID进行检索
public abstract void Search(int id);
//下一个处理者 参数为实现处理接口的实现类
public abstract void nextHandler(Handler han);
}
package org.zhy.design.demo;
import java.util.ArrayList;
import java.util.List;
/**
* 文学类的书籍检索
* @author zhengyi
*
*/
public class WenXue implements Handler{
private Handler han;//下一个处理者
private List<Integer> list; //模拟文学类书籍的编号
public WenXue(){
list=new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
}
@Override
public void nextHandler(Handler han) {
this.han=han; //给下一个处理者赋值
}
@Override
public void Search(int id) {
if(list.contains(id)){ //检索list中是否存在此ID的书籍,如果存在则打印
System.out.println("恭喜您,您检索的书籍是文学类的");
}else{ //如果没有此书籍则交给下一个处理者进行处理
if(han!=null){
han.Search(id);
}
}
}
}
package org.zhy.design.demo;
import java.util.ArrayList;
import java.util.List;
/**
* 计算机类的书籍
* @author zhengyi
*
*/
public class JiSuanJi implements Handler {
private Handler han;
private List<Integer> list;
public JiSuanJi(){
list=new ArrayList<Integer>();
list.add(6);
list.add(7);
list.add(8);
list.add(9);
list.add(10);
}
@Override
public void nextHandler(Handler han) {
this.han=han;
}
@Override
public void Search(int id) {
if(list.contains(id)){
System.out.println("恭喜你,记在计算机类");
}else{
if(han!=null){
han.Search(id);
}
}
}
}
package org.zhy.design.demo;
public class Appliction {
private Handler jisuanji,wenxue;
public void createHandler(){
jisuanji=new JiSuanJi();
wenxue=new WenXue();
jisuanji.nextHandler(wenxue); //指定下一个处理者
}
public void search(int id){
jisuanji.Search(id); //第一个处理者进行筛选处理
}
public static void main(String[] args) {
Appliction app=new Appliction();
app.createHandler();
app.search(10);
}
}
适合使用责任链模式的情况
1、在许多对象可以处理用户请求的时候
2、希望用户不必明确处理者的时候,同时向多个处理者发送请求
3、程序希望动态的订制可处理用户请求的集合对象
希望本文所述对大家java程序设计有所帮助。
# Java
# 责任链
# 模式
# Java设计模式之责任链模式(Chain of Responsibility模式)介绍
# Java 中责任链模式实现的三种方式
# 详解Java实现设计模式之责任链模式
# Java责任链模式详解
# JAVA设计模式之责任链模式详解
# Java设计模式之责任链模式简介
# java设计模式(实战)-责任链模式
# Java责任链设计模式
# Java实现设计模式之责任链模式
# Java责任链模式的实现方法详解
# 第一个
# 是一个
# 几个
# 都有
# 多个
# 这条
# 给大家
# 如果没有
# 主要包括
# 所述
# 程序设计
# 恭喜你
# 是否存在
# 是否能够
# 订制
# 过程中
# 有一个
# 若干个
# 讲述了
# 在接到
相关文章:
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何通过WDCP绑定主域名及创建子域名站点?
详解jQuery中基本的动画方法
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何在Tomcat中配置并部署网站项目?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
如何零基础在云服务器搭建WordPress站点?
如何在IIS7中新建站点?详细步骤解析
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
如何用PHP快速搭建CMS系统?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
购物网站制作公司有哪些,哪个购物网站比较好?
建站之星后台密码如何安全设置与找回?
南宁网站建设制作定制,南宁网站建设可以定制吗?
如何通过PHP快速构建高效问答网站功能?
淘宝制作网站有哪些,淘宝网官网主页?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
家庭建站与云服务器建站,如何选择更优?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
如何访问已购建站主机并解决登录问题?
专业公司网站制作公司,用什么语言做企业网站比较好?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
中山网站制作网页,中山新生登记系统登记流程?
如何选择可靠的免备案建站服务器?
如何在香港服务器上快速搭建免备案网站?
香港服务器选型指南:免备案配置与高效建站方案解析
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
微信小程序 input输入框控件详解及实例(多种示例)
北京制作网站的公司,北京铁路集团官方网站?
宝塔新建站点报错如何解决?
电商网站制作价格怎么算,网上拍卖流程以及规则?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
如何在Golang中使用replace替换模块_指定本地或远程路径
如何使用Golang安装API文档生成工具_快速生成接口文档
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
在线教育网站制作平台,山西立德教育官网?
TestNG的testng.xml配置文件怎么写
济南企业网站制作公司,济南社保单位网上缴费步骤?
如何通过智能用户系统一键生成高效建站方案?
如何通过老薛主机一键快速建站?
网站app免费制作软件,能免费看各大网站视频的手机app?
建站之星会员如何解锁更多建站功能?
建站主机系统SEO优化与智能配置核心关键词操作指南
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
C#如何在一个XML文件中查找并替换文本内容
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
*请认真填写需求信息,我们会在24小时内与您取得联系。