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

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

一、什么是责任链模式?

  责任链模式是指多个对象,能够依次的对传递过来的信息进行处理,并传递给下一个对象,直到处理完毕。

二、责任链有哪些角色?

  1. 抽象处理者角色:定义一个处理请求的接口,如果需要,接口可以定义出一个方法来设定和返回下一个处理者
  2. 具体处理者角色:具体处理者接收到请求后,可以选择将请求处理掉,或者将请求传递给下一个处理者

三、代码详解:

  抽象类:  

public abstract class Handler {    /**     * 下一个处理者     */    private Handler target;    public Handler getTarget() {        return target;    }    public void setTarget(Handler target) {        this.target = target;    }        public abstract void process();}

  具体实现者A:

public class Handler_A extends Handler {    @Override    public void process() {        Handler handler = getTarget();        if (handler == null) {            System.out.println("A处理后, 直接返回结果");            return;        } else {            System.out.println("A处理后,返回个下一个handler继续处理");            handler.process();        }    }}

  具体实现者B:

public class Handler_B extends Handler{    @Override    public void process() {        Handler handler = getTarget();        if (handler == null) {            System.out.println("B处理后, 直接返回结果");            return;        } else {            System.out.println("B处理后,返回个下一个handler继续处理");            handler.process();        }    }}

  客户端:

public class Client {    public static void main(String[] args) {                Handler handlerA = new Handler_A();        Handler handlerB = new Handler_B();        handlerA.setTarget(handlerB);                handlerA.process();            }    }

结果打印: 

A处理后,返回个下一个handler继续处理B处理后, 直接返回结果

 

  

转载于:https://www.cnblogs.com/lfdingye/p/7789061.html

你可能感兴趣的文章
redhat6.1下chrome的安装
查看>>
cacti分组发飞信模块开发
查看>>
浅析LUA中游戏脚本语言之魔兽世界
查看>>
飞翔的秘密
查看>>
Red Hat 安装源包出错 Package xxx.rpm is not signed
查看>>
编译安装mysql-5.6.16.tar.gz
查看>>
类与成员变量,成员方法的测试
查看>>
活在当下
查看>>
每天进步一点----- MediaPlayer
查看>>
PowerDesigner中CDM和PDM如何定义外键关系
查看>>
跨域-学习笔记
查看>>
the assignment of reading paper
查看>>
android apk 逆向中常用工具一览
查看>>
MyEclipse 报错 Errors running builder 'JavaScript Validator' on project......
查看>>
Skip List——跳表,一个高效的索引技术
查看>>
Yii2单元测试初探
查看>>
五、字典
查看>>
前端js之JavaScript
查看>>
Log4J日志配置详解
查看>>
实验7 BindService模拟通信
查看>>