Java设计模式—职责链模式(Chain of Responsibility)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java设计模式—职责链模式(Chain of Responsibility),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2761字,纯文字阅读大概需要4分钟。
内容图文
目录
-
目的
避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将他们连接成一条链,并且沿着这条链传递请求,直到有对象处理为止。
-
应用实例
- 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递。
- Servlet的过滤器Fileter。
-
代码
package com.gary.pattern.chain;
/**
* describe:抽象记录器类
*
* @author gary
* @date 2018/12/23
*/
public abstract class AbstractLogger {
public static int INFO = 1;
public static int DEBUG = 2;
public static int ERROR = 3;
protected int level;
protected AbstractLogger nextLogger;
public AbstractLogger setNextLogger(AbstractLogger nextLogger) {
this.nextLogger = nextLogger;
return this;
}
public void logMessage(int level, String message) {
if (level >= this.level) {
write(message);
}
if (nextLogger != null) {
nextLogger.logMessage(level, message);
}
}
abstract public void write(String message);
}
package com.gary.pattern.chain;
/**
* describe:记录器类的实现类
*
* @author gary
* @date 2018/12/23
*/
public class ErrorLogger extends AbstractLogger {
public ErrorLogger(int level) {
this.level = level;
}
@Override
public void write(String message) {
System.out.println("ErrorLogger:" + message);
}
}
package com.gary.pattern.chain;
/**
* describe:记录器类的实现类
*
* @author gary
* @date 2018/12/23
*/
public class DebugLogger extends AbstractLogger {
public DebugLogger(int level) {
this.level = level;
}
@Override
public void write(String message) {
System.out.println("DebugLogger:" + message);
}
}
package com.gary.pattern.chain;
/**
* describe:记录器类的实现类
*
* @author gary
* @date 2018/12/23
*/
public class ConsoleLogger extends AbstractLogger {
public ConsoleLogger(int level) {
this.level = level;
}
@Override
public void write(String message) {
System.out.println("ConsoleLogger:" + message);
}
}
package com.gary.pattern.chain;
/**
* describe:记录器链测试Demo
*
* @author gary
* @date 2018/12/23
*/
public class ChainDemo {
/**
* 创建不同类型的记录器,赋予不同级别,并每个记录器设置下一个记录器。
*
*/
private static AbstractLogger getChainOfLoggers() {
return new ErrorLogger(AbstractLogger.ERROR)
.setNextLogger(new DebugLogger(AbstractLogger.DEBUG)
.setNextLogger(new ConsoleLogger(AbstractLogger.INFO)));
}
public static void main(String[] args) {
AbstractLogger chainOfLogger = getChainOfLoggers();
chainOfLogger.logMessage(AbstractLogger.INFO, "This is an info information");
chainOfLogger.logMessage(AbstractLogger.DEBUG, "This is an dubug information");
chainOfLogger.logMessage(AbstractLogger.ERROR, "This is an error information");
}
}
ConsoleLogger:This is an info information
DebugLogger:This is an dubug information
ConsoleLogger:This is an dubug information
ErrorLogger:This is an error information
DebugLogger:This is an error information
ConsoleLogger:This is an error information
Process finished with exit code 0
内容总结
以上是互联网集市为您收集整理的Java设计模式—职责链模式(Chain of Responsibility)全部内容,希望文章能够帮你解决Java设计模式—职责链模式(Chain of Responsibility)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。