为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。
比如击鼓传花?或者申请什么?大概意思就是一级一级的往上或往下
class AbstractLogger {
constructor(level) {
this.level = level
this.nextLogger = null
}
setNextLogger(nextLogger) {
this.nextLogger = nextLogger
}
logMessage(level, message) {
if(this.level === level) this.write(message)
if(this.nextLogger != null) this.nextLogger.logMessage(level, message)
}
write(message) {
console.log('AbstractLogger:', message)
}
}
AbstractLogger.LOG = 1
AbstractLogger.INFO = 2
AbstractLogger.ERROR = 3
class Logger extends AbstractLogger {
constructor(name, level) {
super(level)
this.name = name
}
write(message) {
console.log(`${this.name}: ${message}`)
}
}
const consoleLog = new Logger('consoleLog', AbstractLogger.LOG)
const consoleInfo = new Logger('consoleInfo', AbstractLogger.INFO)
const consoleError = new Logger('consoleError', AbstractLogger.ERROR)
consoleError.setNextLogger(consoleInfo)
consoleInfo.setNextLogger(consoleLog)
const logger = consoleError
logger.logMessage(AbstractLogger.ERROR, '错误')
logger.logMessage(AbstractLogger.INFO, '信息')
logger.logMessage(AbstractLogger.LOG, '日志')