【Java面试高频-设计模式】- Java责任链模式
发布日期:2021-06-29 15:36:48
浏览次数:2
分类:技术文章
本文共 1939 字,大约阅读时间需要 6 分钟。
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链发送该请求,直到有一个对象处理位置。
定义消息请求
// 定义请求class Request{ private RequestType type; private String name; public Request(RequestType type,String name) { this.type = type; this.name = name; } public RequestType getType() { return this.type; } public String getName() { return this.name; }}// 定义请求类型enum RequestType{ TYPE1,TYPE2}
定义处理请求的抽象类
// 定义处理请求的接口,并且实现后继链(successor)abstract class Handler{ protected Handler successor ; public Handler(Handler successor ) { this.successor = successor ; } // 处理请求的方法 protected abstract void handleRequest(Request request);}
定义处理请求的Handler
// 第一个处理者class HandlerOne extends Handler{ public HandlerOne(Handler handler) { super(handler); } /** * 请求处理 */ @Override protected void handleRequest(Request request) { if(request.getType()==RequestType.TYPE1) { // 处理 System.out.println(request.getName() + " is handle by HandlerOne"); return; } //接着走传递 if(successor !=null) { successor.handleRequest(request); } }}// 第二个处理者class HandlerTwo extends Handler{ public HandlerTwo(Handler successor ) { super(successor ); // TODO Auto-generated constructor stub } @Override protected void handleRequest(Request request) { // TODO Auto-generated method stub if(request.getType()==RequestType.TYPE2) { System.out.println(request.getName() + " is handle by HandlerTwo"); return; } // 传递 if(successor!=null) { successor.handleRequest(request); } }}
测试主函数
public class Chain_Of_Responsibility { public static void main(String[] args) { // 生成处理者 Handler handler1 = new HandlerOne(null); Handler handler2 = new HandlerTwo(handler1); // 消息 Request message1 = new Request(RequestType.TYPE1, "message1"); Request message2 = new Request(RequestType.TYPE2, "message2"); //注意调用的时候是最后来调用 handler1.handleRequest(message1); handler2.handleRequest(message2); }}
转载地址:https://codingchaozhang.blog.csdn.net/article/details/116737999 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月04日 18时37分51秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MySQL基础练习
2019-04-29
利用MySQL进行数据复杂查询(1)
2019-04-29
利用MySQL进行数据复杂查询(2)
2019-04-29
MySQL 表与表之间的关系
2019-04-29
Python数据处理
2019-04-29
Java练习题(面向对象)
2019-04-29
Python 利用os和shutil复制系统文件
2019-04-29
Python 循环输出菱形字符串
2019-04-29
MySQL常见错误总结
2019-04-29
pymysql 的基础应用
2019-04-29
Html+Css实现 启橙装饰网 项目
2019-04-29
JavaScript 实现哥德巴赫猜想
2019-04-29
JavaScript DOM
2019-04-29
Python 管理程序改进——连接MYSQL
2019-04-29
Python 爬虫
2019-04-29
Python 爬虫-百度风云榜的电影top50
2019-04-29
Python 爬虫-豆瓣影星图片下载
2019-04-29
Excel数据基础操作
2019-04-29
网页端数据库操作界面—主题函数文件
2019-04-29
网页端数据库操作界面-Html页面(1)
2019-04-29