【问题标题】:Is java.util.logging.Logger.log() is an chain of responsibility pattern?java.util.logging.Logger.log() 是责任链模式吗?
【发布时间】:2011-09-26 14:37:51
【问题描述】:

java.util.logging.Logger.log() 是责任链模式吗?如果是这样,日志方法调用如何链接到下一次调用?

【问题讨论】:

    标签: java design-patterns


    【解决方案1】:

    这里是相关的code

    // Post the LogRecord to all our Handlers, and then to
    // our parents' handlers, all the way up the tree.
    
    Logger logger = this;
    while (logger != null) {
        Handler targets[] = logger.getHandlers();
    
        //...
    
        if (!logger.getUseParentHandlers()) {
          break;
        }
    
        logger = logger.getParent();
    }
    }
    

    如您所见,每条日志记录都会传递给分配给给定记录器的每个Handler,如果useParentHandlerstrue,则相同的算法将一直应用于父级。

    所以本质上这是一个责任链模式,链中的每个元素都可能处理请求的一部分。

    【讨论】:

    • 是的,我已经提供了this 链接(参见log(LogRecord) 方法),它在Sun JDK 中看起来是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多