背景与问题
对容器的访问,例如java的List、Map等,必然涉及遍历算法。
- 若将遍历方法封装到容器中,容器类负担重;
- 若遍历方法由使用者实现,会暴露容器的内部细节;
解决方案
迭代器模式
- 定义
提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示。 - 使用场景
遍历一个容器对象时 UML类图
- Iterator:迭代器接口,负责访问、遍历元素。
- ConcreteIterator:具体迭代器类,实现迭代器接口,记录遍历位置。
- Aggregate:容器接口,提供创建具体迭代器的接口
- ConcreteAggregate:具体容器类,与具体迭代器相关联
应用实例
Cursor- 总结
- 优点:弱化容器类与遍历算法的关系
- 缺点:更多代码
参考文献:
android源码设计模式解析与实战
本文探讨了在访问容器如Java的List、Map时所面临的遍历问题,并提出了迭代器模式作为解决方案。通过定义一个不暴露容器内部表示的访问方法,使得遍历过程更加灵活且与容器实现解耦。
2406

被折叠的 条评论
为什么被折叠?



