Java设计模式 -责任链模式
责任链模式为请求创建一个接收者对象列表。
这种模式是行为模式。
当使用责任链模式时,通常每个接收器包含对另一个接收器的引用。
如果一个对象不能处理请求,则它将相同的对象传递给下一个接收者,等等。
例子
abstract class Logger {protected Logger nextLogger;public void setNextLogger(Logger nextLogger){this.nextLogger = nextLogger;}public void logMessage(String message){log(message);if(nextLogger !=null){nextLogger.logMessage(message);}}abstract protected void log(String message); } class ConsoleLogger extends Logger {public ConsoleLogger(){}@Overrideprotected void log(String message) { System.out.println("Console::Logger: " + message);} } class EMailLogger extends Logger {public EMailLogger(){}@Overrideprotected void log(String message) { System.out.println("EMail::Logger: " + message);} } class FileLogger extends Logger {public FileLogger(){}@Overrideprotected void log(String message) { System.out.println("File::Logger: " + message);} } public class Main { private static Logger getChainOfLoggers(){Logger emailLogger = new EMailLogger();Logger fileLogger = new FileLogger();Logger consoleLogger = new ConsoleLogger();emailLogger.setNextLogger(fileLogger);fileLogger.setNextLogger(consoleLogger);return emailLogger; }public static void main(String[] args) {Logger loggerChain = getChainOfLoggers();loggerChain.logMessage("Null pointer");loggerChain.logMessage("Array Index Out of Bound");loggerChain.logMessage("Illegal Parameters");} }
上面的代码生成以下结果。