知识卡片
迭代器模式已被语言内置,几乎不需要自己实现
内容
项目信息报表最初用ArrayList+for-each循环即可,手写[[迭代器模式的定义与四个角色]]反而 让代码更复杂——for-each语法糖本身就依赖ArrayList已实现iterator()方法。Java从JDK 1.2 起把Iterator融入所有Collection类,几乎不需要业务开发手写。发散:设计模式”没落”有两种 方式——一种是被证明无效,另一种是像迭代器模式这样因太成功而被语言内置吸收。
参考来源
- 位置:《设计模式之禅(第2版)》第20章《迭代器模式》(源文件:_epub-src/text/part0090.html、part0092.html)
- 结论依据:原文指出`for(IProject project:projectList)`能运行是因为ArrayList已实现iterator()方法,并列举java.util.Iterable被Collection、List、Set等几乎所有常用集合类实现,总结"这个迭代器模式也有点没落了,基本上很少有项目再独立写迭代器了"。
- 原始内容:它为什么能够运行起来?还不是因为ArrayList已经实现了iterator()方法……正是因为Java把迭代器模式已经融入到基本API中了,我们才能如此轻松、便捷……基本上很少有项目再独立写迭代器了,直接使用Collection下的实现类就可以完美地解决问题。