ARTICLE · 1333411
第104篇:模板方法模式——封装通用导出
第104篇:模板方法模式——封装通用导出
第104篇:模板方法模式——封装通用导出
我们团队真栽过一次:同一个导入功能,复制出三份代码,最后线上把系统拖垮了。
最初只有 CSV 导入。后来接 Excel、接 JSON,开发图省事,直接复制粘贴。三个类各自改,越改越不像。
某次补“用完关文件”,CSV 和 Excel 都加了,JSON 漏了。测试跑几百次没事,上线一忙就报 Too many open files——文件句柄全被吃光。
更麻烦的是事务。三个类对“什么时候提交”写了三种实现。有的逐批提交,有的校验失败也不回滚。同一规则,三种结果。
问题不在复制粘贴本身,而在流程控制权散到了子类手里。资源关闭、事务边界、失败回滚,本该统一保证的事,全靠人记。
解法是把骨架锁死:父类写个 final 的 execute(),子类只填读取、校验、映射、入库这四步。事务、回滚、通知、关资源,全由父类说了算。
钩子也要少。超过五个就该考虑用组合替代继承。异常更不能吞——catch 住不抛,Spring 可能以为成功了,数据就脏了。
模板方法真正要锁住的,不是代码复用,而是那几条不能变的规矩。
原文第104篇:模板方法模式——封装通用导出、导入流程的“流程控制权”边界
收录于Java项目实战示例
新疆,46分钟前,















































































