Chain Of Responsibility
来源:互联网 发布:手机图文排版软件 编辑:程序博客网 时间:2024/06/03 21:31
责任链设计模式,使链上每个节点都有机会处理请求。将处理对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。
抽象处理者角色: 定义出一个处理请求的接口。如果需要,接口可以定义 出一个方法以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现。
具体处理者角色: 具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。
责任链打印日志代码示例:
抽象处理类
public abstract class Logger { public static final int DUBEG = 1; public static final int INFO = 2; public static final int ERROR = 3; protected int level = 0; protected Logger nextLogger; public Logger getNextLogger() { return nextLogger; } public void logMessage(int level, String message) { //指定的级别够我就处理 if (level <= this.level) { write(message); } //传递给下家 if (nextLogger != null) { nextLogger.logMessage(level, message); } } public void setNextLogger(Logger nextLogger) { this.nextLogger = nextLogger; } //由具体执行者实现 protected abstract void write(String message);}
三个级别的具体处理类
public class Debug extends Logger { public Debug(int level) { this.level = level; } @Override public void write(String message) { System.out.println("[debug]: " + message); }}
public class Info extends Logger { public Info(int level) { this.level = level; } @Override public void write(String message) { System.out.println("[info]: " + message); }}
public class Error extends Logger { public Error(int level) { this.level = level; } @Override public void write(String message) { System.out.println("[error]: " + message); }}
责任链工厂,包装处理链
public final class LoggerFactory { public static Logger getLogger() { // 初始化责任链节点 Logger debug = new Debug(Logger.DUBEG); Logger info = new Info(Logger.INFO); Logger error = new Error(Logger.ERROR); // 设置责任链关系 info.setNextLogger(error); debug.setNextLogger(info); return debug; }}
测试
public class LoggerChainTest { private static final Logger logger = LoggerFactory.getLogger(); public static void main(String args[]) { //可以通过改变这里的日志级别,控制输出的日志 logger.logMessage(Logger.ERROR, "Hello World"); }}
0 0
- 通讯兵(Chain of Responsibility)
- Chain of Responsibility
- Chain of Responsibility Pattern
- Chain of responsibility模式
- Chain of Responsibility pattern
- Chain of Responsibility模式
- Chain of Responsibility Pattern
- chain of Responsibility pattern
- Chain of Responsibility
- Chain of Responsibility
- Chain Of Responsibility模式
- Chain Of Responsibility
- Chain Of Responsibility模式
- Chain of Responsibility 模式
- Chain of Responsibility Pattern
- Chain of Responsibility模式
- Chain of Responsibility
- Chain of Responsibility
- centos升级gcc版本遇到的一些问题
- curl 命令
- android打开系统相机分别获得原图和缩略图
- C语言——数组与指针
- 人权观察攻击“双规”,用心极其险恶
- Chain Of Responsibility
- JasperReport技术积累
- protobuf rpc介绍
- jstl <c:forEach>
- 2.1 深度学习常用软件包和环境配置
- 第22篇 ninja的安装(三)及安装graphviz
- 深度学习tensorflow入门-CNN
- c#(vs2013)、 matlab(2014a)混合编程
- 使用Wireshark简单分析ICMP报文(ping)