package com.zzq.pattern.decorator;
public interface Executor {
public void execute(String msg);
}
package com.zzq.pattern.decorator;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
public class BufferedLogger {
private static final int SIZE = 100;
private Logger logger = null;
private Map<String, List<String>> map = null;
public BufferedLogger(Logger logger) {
this.logger = logger;
this.map = new HashMap<String, List<String>>();
}
public void fine(String msg) {
process(msg, "fine", new Executor() {
public void execute(String msg) {
logger.fine(msg);
}
});
}
public void info(String msg) {
process(msg, "info", new Executor() {
public void execute(String msg) {
logger.info(msg);
}
});
}
public void severe(String msg) {
process(msg, "severe", new Executor() {
public void execute(String msg) {
logger.severe(msg);
}
});
}
public void warning(String msg) {
process(msg, "warning", new Executor() {
public void execute(String msg) {
logger.warning(msg);
}
});
}
private void process(String msg, String level, Executor executor) {
List<String> buffer = map.get(level);
boolean overflow = checkSize(level);
if (overflow == true) {
for (String content : buffer) {
executor.execute(content);
}
clearBuffer(level);
}
buffer.add(msg);
}
private boolean checkSize(String level) {
List<String> buffer = map.get(level);
if (buffer != null && buffer.size() < SIZE) {
return false;
}
if (buffer == null) {
map.put(level, new ArrayList<String>());
return false;
}
return true;
}
private void clearBuffer(String level) {
List<String> buffer = map.get(level);
if (buffer != null) {
buffer.clear();
}
}
}
分享到:
相关推荐
年终总结——2011年XXX支行.doc
考研英语1980——2011年32年真题与答案精解
年终总结——2011年XXX支行(1).doc
中国矿业大学信电学院历年考研电路真题1998——2011年
VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用代码源)VC代码 对话条——属性 (实用...
Java编程经典——2011新版Java教程Java编程经典——2011新版Java教程
robotic导航————————————————————————————
寻找质数——————————————————
first test——————————
XSS测试代码 安全测试 XSS测试代码大全
代码 基于遗传算法的优化计算——建模自变量降维代码代码 基于遗传算法的优化计算——建模自变量降维代码代码 基于遗传算法的优化计算——建模自变量降维代码代码 基于遗传算法的优化计算——建模自变量降维代码代码...
react pro——————————
北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮——计算机——数学建模——专业选修 北邮...
Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码...
主要记录个人在进行后仿时的操作步骤和遇到的一些小问题,仅供个人记录,偶这个脑子哦
代码能有多难?——简单的网页代码书
Android代码示例——从相机或相册中获取图片,并调用系统自带截取功能,截取后保存并更换背景
为了方便大家的学习,这里准备了单片机控制发光二极管亮或熄(多个进行循环),实现流水灯
锦汇花园2月26日——月31日广告推行计划
大三上项目代码——web