【Java面试高频-设计模式】- Java责任链模式
发布日期:2021-06-29 15:36:48
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月23日 20时07分18秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
70%求职者因此被拒,你还不避开这些“雷区”?!
2019-04-29
办法不在多,有用就行!用Dropout解决过度拟合问题
2019-04-29
色情演员识别?绝对是人脸识别最糟糕的应用……
2019-04-29
让强化学习逃离“乏味区域陷阱”,试着加点噪音吧!
2019-04-29
超详细Spring Boot面试问题集锦,死角一个不留!
2019-04-29
10个业余时间可完成的项目,助你飞速提升编码能力!
2019-04-29
用深度学习打造艺术大师:照片变身的“魔法”
2019-04-29
必看!今年最火的五大Python框架
2019-04-29
掌握代码背后的这种语言,让你一招通吃天下!
2019-04-29
最终榜单!2019年人工智能的15个热门趋势
2019-04-29
揭秘卷积神经网络热力图:类激活映射
2019-04-29
骂谷歌,怼百度,批腾讯,吴军为何DISS互联网公司没得怕的?
2019-04-29
网络爬虫初涉——用python爬取网络小说
2019-04-29
Pycharm+tensorflow dropout 学习(三)
2019-04-29
Pycharm+tensorflow CNN 学习(四)
2019-04-29
用python暴力破解压缩包密码
2019-04-29
基于OpenCV 将图片进行预处理,转变为MNIST图片格式
2019-04-29
PyCharm+Tensorflow CNN调用训练好的模型进行预测 (五)
2019-04-29
物联网平台Node-red初涉——访问搭建的简易服务器
2019-04-29
2020-10-27
2019-04-29