责任链模式
来源:互联网 发布:万网域名注册 编辑:程序博客网 时间:2024/06/10 18:33
责任链模式(行为模式)
Chain of Responsibility模式,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像条链子紧密相连
应用:Struts2拦截器
例子:打印日志,日志的种类根据严重级别有Info日志、Debug日志和Error日志等。这其中就包含责任链模式,先由Error日志类先处理,然后交由Debug,最后再由Info日志类处理。
AbstractLogger.java
抽象日志类
public abstract class AbstractLogger { public static int INFO = 1; public static int DEBUG = 2; public static int ERROR = 3; private int level; private AbstractLogger nextLogger; public AbstractLogger(int level) { this.level = level; } public void setNextLogger(AbstractLogger nextLogger) { this.nextLogger = nextLogger; } public void logMessage(int level, String message) { if (this.level <= level) printLogger(message); if (nextLogger != null) nextLogger.logMessage(level, message); } public abstract void printLogger(String message);}
InfoLogger.java
info日志类
public class InfoLogger extends AbstractLogger { public InfoLogger(int level) { super(level); } @Override public void printLogger(String message) { System.out.println("Info:" + message); }}
Debug.java
调试日志类
public class DebugLogger extends AbstractLogger { public DebugLogger(int level) { super(level); } @Override public void printLogger(String message) { System.out.println("Debug:" + message); }}
Error.java
错误日志类
public class ErrorLogger extends AbstractLogger { public ErrorLogger(int level) { super(level); } @Override public void printLogger(String message) { System.out.println("Error:" + message); }}
Test.java
测试类
public class Test { //创建责任链 private static AbstractLogger getChainOfLoggers(){ AbstractLogger errorLogger = new ErrorLogger(AbstractLogger.ERROR); AbstractLogger debugLogger = new DebugLogger(AbstractLogger.DEBUG); AbstractLogger infoLogger = new InfoLogger(AbstractLogger.INFO); errorLogger.setNextLogger(debugLogger); debugLogger.setNextLogger(infoLogger); return errorLogger; } public static void main(String[] args) { AbstractLogger loggerChain = getChainOfLoggers(); loggerChain.logMessage(AbstractLogger.INFO, "这是一个信息"); loggerChain.logMessage(2, "这是一个bug"); loggerChain.logMessage(3, "这是一个错误"); }}
结果
Info:这是一个信息Debug:这是一个bugInfo:这是一个bugError:这是一个错误Debug:这是一个错误Info:这是一个错误
阅读全文
0 0
- 责任链模式
- 深入浅出责任链模式
- 责任链模式
- 责任链模式
- 深入浅出责任链模式
- 责任链模式(一)
- 责任链模式(二)
- 责任链模式(三)
- 责任链模式
- java责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- c++ 责任链模式
- java责任链模式
- 责任链模式
- IOC细解+示例
- hadoop (master/slave)主从结构
- solaris11开启root用户的ssh登录&telnet登录&ftp功能
- Java反射
- scss在angular+gulp中的使用(自己项目记录)
- 责任链模式
- Spring事务处理时自我调用的解决方案及一些实现方式的风险
- Java 小游戏
- 1.3算法研究-完全背包问题
- APICloud openFrame遮住底部导航
- MySQL带ANY关键字的子查询
- 6要点助你开发自动化运维架构
- Javaweb知识复习
- 网络正常浏览器无法使用的问题