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

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

  hot3.png

责任链模式:即处理一个逻辑时,请求到一个对象A,对象A处理完毕传递给对象B进行处理,对象B处理完毕传递给对象C进行处理,依次下去,直到传递到最后一个对象处理完毕。

源代码如下:

责任链接口(Handler):定义操作的接口,对外提供。

责任链抽象类(AbstractHandler):定义了一个接口类型对象,主要用来设定和返回责任链的下一个对象。

责任链具体类(MyHandler):实现接口,继承抽象类。

                           实现的方法逻辑【1、如果有下一个对象,则传递、调用下一个对象,2、如果没有下一个对象,处理请求。】

 

package com.pattern;public interface Handler {	public void operation();}package com.pattern;public abstract class AbstractHandler {	private Handler handler;	public Handler getHandler() {		return handler;	}	public void setHandler(Handler handler) {		this.handler = handler;	}}package com.pattern;public class MyHandler extends AbstractHandler implements Handler {	private String value;	public MyHandler(String value) {		this.value = value;	}	@Override	public void operation() {		if (null != getHandler()) {			System.out.println(this.value + "  寻找责任链上的下一个对象   "					+ ((MyHandler) super.getHandler()).value);			getHandler().operation();		} else {			System.out.println("最后执行处理:" + this.value);		}	}}package com.pattern;public class Test {	public static void main(String[] args) {		MyHandler myh1 = new MyHandler(" 一 ");		MyHandler myh2 = new MyHandler(" 二 ");		MyHandler myh3 = new MyHandler(" 三 ");		MyHandler myh4 = new MyHandler(" 四 ");		MyHandler myh5 = new MyHandler(" 五 ");		myh1.setHandler(myh5);		myh5.setHandler(myh2);		myh2.setHandler(myh4);		myh4.setHandler(myh3);		myh1.operation();	}}

测试结果:

 一   寻找责任链上的下一个对象    五

 五   寻找责任链上的下一个对象    二
 二   寻找责任链上的下一个对象    四
 四   寻找责任链上的下一个对象    三
最后执行处理: 三

转载于:https://my.oschina.net/returnspace/blog/55674

你可能感兴趣的文章
html的marquee理解
查看>>
区块链中的密码学
查看>>
大数据第七天
查看>>
放新浪微博的箭头css写法
查看>>
H5视频推流方案
查看>>
struts2获得需要的文件或者访问路径
查看>>
python 读写CSV文件
查看>>
Linux tar解压出错
查看>>
unity中利用纯物理工具制作角色移动跳跃功能
查看>>
汉诺塔学习笔记,有不正确的地方请小伙伴们指正~·~
查看>>
如何打造优秀团队--建立团队开放分享文化
查看>>
Oracle 获取当前日期及日期格式
查看>>
位运算操作符_
查看>>
IDEA
查看>>
解除yum占用
查看>>
转apk打包
查看>>
missing blocks错误
查看>>
realm数据库使用
查看>>
说说qwerty、dvorak、colemak三种键盘布局
查看>>
3、centos6.*与centos7.*防火墙操作命令
查看>>