将系统的构造与使用分开
public Service getService() {
if (service == null) {
service = new MyServiceImpl(...);
}
return service;
}
延迟初始化/赋值
- 不分解这些依赖关系就无法编译。
- 测试会是个问题。
- 不知道MyServiceImpl在所有情形中是否都是正确的对象。
“一开始就做对系统”纯属神话。反之,我们应该只去实现今天的 用户政策 ,然后重构,明天再扩展系统、实现新的用户故事。这就是迭代和增量敏捷的精髓所在。测试驱动开发、重构以及它们打造出的整洁代码,在代码层面保证了这个过程的实现。