Method Object 的核心思想和适用场景
核心观点
Method Object 把一个难以理解和测试的长方法整体搬进新对象,让原本困在局部变量里的中间结果变成对象字段,再把方法体拆成可以单独验证的小步骤。
长方法的麻烦常常不在长度,而在局部变量互相纠缠:每抽出一小段,就要拖上一串参数。Method Object 换了个切入点——不先抽方法,而是先把”这一整段计算”变成一个类:输入变成构造参数,中间结果变成字段,原来的方法体变成该对象上的几个小方法。于是每一步都能独立测试,调用方只关心最终结果。
代价是新增一个类型和一次对象创建,所以它只值得用在确实复杂、需要反复修改和验证的方法上;结构简单的方法,提取函数就够了。
知识连接
- 建立在:Split Phase 的核心概念和应用要点——同样把一条长流程拆成可独立验证的阶段,Method Object 把阶段承载到一个对象上。
- 对照:提取接缝模式的核心思想和适用场景——接缝是为测试留出插入点,Method Object 是为计算留出可测试的容器。
- 导向:遗留系统现代化——体量巨大、无法测试的老方法,是 Method Object 最典型的改造对象。
- 相似于:重构——都不改变外部可见行为,只改善内部结构。