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(){ } @Override protected void log(String message) { System.out.println("Console::Logger: " + message); } } class EMailLogger extends Logger { public EMailLogger(){ } @Override protected void log(String message) { System.out.println("EMail::Logger: " + message); } } class FileLogger extends Logger { public FileLogger(){ } @Override protected 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"); } }
上面的代码生成以下结果。