Design Pattern 14-java 责任链模式(Chain of Responsibility Pattern)
2017年3月14日大约 2 分钟
责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。
这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。
在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
实际案例
类信息概览:
类名 | 说明 |
---|---|
Main.java | 方法的总入口 |
LoggerLevel.java | 日志级别 |
AbstractLogger.java | 抽象 logger |
Logger.java | logger 接口 |
ErrorLogger.java | 错误日志 |
WarnLogger.java | 警告日志 |
InfoLogger.java | 信息日志 |
定义
- LoggerLevel.java
package com.ryo.design.pattern.note.chainOfResponsibility;
/**
* @author houbinbin
* @version 1.0
* @on 2017/8/12
* @since 1.7
*/
public class LoggerLevel {
/**
* 信息
*/
public static final int INFO = 1;
/**
* 警告
*/
public static final int WARN = 2;
/**
* 错误
*/
public static final int ERROR = 3;
}
- AbstractLogger.java
package com.ryo.design.pattern.note.chainOfResponsibility;
/**
* @author houbinbin
* @version 1.0
* @on 2017/8/12
* @since 1.7
*/
public abstract class AbstractLogger implements Logger {
/**
* 下一个日志打印器
*/
private AbstractLogger nextLogger;
/**
* Logger 本身的日志级别
*/
protected int level;
public AbstractLogger(int level) {
this.level = level;
}
@Override
public void logger(int level, String msg) {
if(this.level
*
* Created: 2018/5/20 下午7:15
* Project: design-pattern
*
* @author houbinbin
* @version 1.0
* @since JDK 1.7
*/
public class Main {
public static void main(String[] args) {
AbstractLogger errorLogger = new ErrorLogger();
AbstractLogger warnLogger = new WarnLogger();
AbstractLogger infoLogger = new InfoLogger();
errorLogger.setNextLogger(warnLogger.setNextLogger(infoLogger));
errorLogger.logger(LoggerLevel.WARN, "warn info test");
}
}
- 测试结果
实现方式
UML & Code
UML
UML 图示如下
Code
代码地址
系列导航
贡献者
binbin.hou