摘要:每一个都会检查并且比较消息的等级与该等级,判断打印或者不打印,并且传递消息到下一个。设置每个的错误等级以及每个的,每一个的都是当前链的一部分。
责任链模式
责任链模式顾名思义,对于一个请求会去创建一条接受者链。这种模式会解耦一种类型的请求中接受者和发送者,该模式模式属于行为模式的一种。
在该模式当中,一般情况下,每个接受者都会有另外一个接受者的引用,如果该接受者无法处理该请求,请求会通过引用传入下一个接受者。
我们创建一个抽象类AbstaractLogger,该类中含有日志的记录等级。然后我们会创建三个logger实现AbstractLogger。每一个logger都会检查并且比较消息的等级与该logger等级,判断打印或者不打印,并且传递消息到下一个logger。
第一步创建一个抽象的Logger类
AbstractLogger.java
public abstract class AbstractLogger { public static int INFO = 1; public static int DEBUG = 2; public static int ERROR = 3; protected int level; //next element in chain or responsibility protected AbstractLogger nextLogger; public void setNextLogger(AbstractLogger nextLogger){ this.nextLogger = nextLogger; } public void logMessage(int level, String message){ if(this.level <= level){ write(message); } if(nextLogger !=null){ nextLogger.logMessage(level, message); } } abstract protected void write(String message); }第二步
创建具体的类实现AtstractLogger
ConsoleLogger.java
public class ConsoleLogger extends AbstractLogger { public ConsoleLogger(int level){ this.level = level; } @Override protected void write(String message) { System.out.println("Standard Console::Logger: " + message); } }
ErrorLogger.java
public class ErrorLogger extends AbstractLogger { public ErrorLogger(int level){ this.level = level; } @Override protected void write(String message) { System.out.println("Error Console::Logger: " + message); } }
FileLogger.java
public class FileLogger extends AbstractLogger { public FileLogger(int level){ this.level = level; } @Override protected void write(String message) { System.out.println("File::Logger: " + message); } }第三步
创建不同类型的logger。设置每个Logger的错误等级以及每个logger的Next logger,每一个logger的NextLogger都是当前链的一部分。
ChainPatternDemo.java
public class ChainPatternDemo { private static AbstractLogger getChainOfLoggers(){ AbstractLogger errorLogger = new ErrorLogger(AbstractLogger.ERROR); AbstractLogger fileLogger = new FileLogger(AbstractLogger.DEBUG); AbstractLogger consoleLogger = new ConsoleLogger(AbstractLogger.INFO); errorLogger.setNextLogger(fileLogger); fileLogger.setNextLogger(consoleLogger); return errorLogger; } public static void main(String[] args) { AbstractLogger loggerChain = getChainOfLoggers(); loggerChain.logMessage(AbstractLogger.INFO, "This is an information."); loggerChain.logMessage(AbstractLogger.DEBUG, "This is an debug level information."); loggerChain.logMessage(AbstractLogger.ERROR, "This is an error information."); } }第四步
校验输出
Standard Console::Logger: This is an information. File::Logger: This is an debug level information. Standard Console::Logger: This is an debug level information. Error Console::Logger: This is an error information. File::Logger: This is an error information. Standard Console::Logger: This is an error information.
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/65907.html
摘要:设计模式目的为了代码可重用性让代码更容易被他人理解保证代码可靠性设计原则设计原则是设计模式为了达到其目的,所实现的一些准则。 设计模式简介 1.什么是设计模式 设计模式对是经验的总结,是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。代表了最佳的实战。 2.提出及GOF 在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnso...
摘要:责任链模式一责任链模式定义在责任链模式中,许多对象由每个对象及其对下家的引用而连接起来形成一条链请求在这个链上传递,知道其中的某一个对象决定处理此请求角色抽象处理者角色具体处理者角色纯与不纯纯的责任链模式要么处理,要么让下家处理,而不能处理 责任链模式 一. 责任链模式 1.1 定义 在责任链模式中,许多对象由每个对象及其对下家的引用而连接起来形成一条链.请求在这个链上传递,知道其中的...
摘要:创建型模式主要有以下五种简单工厂模式和工厂方法模式抽象工厂模式单例模式建造者模式原型模式在设计模式一书中将工厂模式分为两类工厂方法模式与抽象工厂模式。 一、 设计模式(Design pattern)是什么 设计模式是一套被反复使用、多数人知晓、经过分类编目的代码设计的经验总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 二、 为什么会有设计模式 在软件开发过...
阅读 2477·2023-04-26 00:42
阅读 2783·2021-09-24 10:34
阅读 3786·2021-09-24 09:48
阅读 4123·2021-09-03 10:28
阅读 2548·2019-08-30 15:56
阅读 2754·2019-08-30 15:55
阅读 3215·2019-08-29 12:46
阅读 2212·2019-08-28 17:52