您的当前位置:首页 >知识 >【使命召唤辅助网】类型适配和防御式编程 正文
时间:2026-02-18 02:32:40 来源:网络整理编辑:知识
使命召唤雪地地图正文:在日常开发中,我们常遇到需要兼容带参数和无参数调用场景的需求。比如一个日志记录工具,既要支持log("操作成功")的简单调用,也要处理log("用户登录", "ID=1001", "TIME=2
当参数需要支持不同类型时 ,基础版:方法重载的陷阱
传统做法是通过重载应对不同参数个数 :
java
// 反例:冗余的重载方法
public void log(String message) {
System.out.println(message);
}public void log(String title, String detail) {
System.out.println(title + ":" + detail);
}public void log(String title, String... details) {
// 更多参数处理...
}
但这种方式存在明显缺陷:
1. 扩展成本高:每新增一种参数组合就要新增方法
2. 可维护性差 :参数逻辑分散在多处 ,实现带智能适配的日志组件:java
public class SmartLogger {
private LogLevel level = LogLevel.INFO;// 建造者模式设置日志级别 public SmartLogger withLevel(LogLevel level) { this.level = level; return this; } // 统一入口方法 public void record(Object... elements) { if (!isLevelEnabled()) return; String content = assembleContent(elements); System.out.printf("[%s] %s\n", level, content); } private String assembleContent(Object[] elements) { if (elements.length == 1) { return elements[0].toString(); } return Arrays.stream(elements) .map(Object::toString) .collect(Collectors.joining(" ▶ ")); }}
// 调用示例
new SmartLogger()
.withLevel(LogLevel.DEBUG)
.record("用户操作", "点击购买按钮", new Exception("库存不足"));