迭代器模式定义:提供了一种顺序访问聚合对象的元素而不暴露其底层表示的方法。维基
暴露底层表征的后果是什么?
提供更详细的答案:迭代器模式如何防止这种情况?
迭代器模式定义:提供了一种顺序访问聚合对象的元素而不暴露其底层表示的方法。维基
暴露底层表征的后果是什么?
提供更详细的答案:迭代器模式如何防止这种情况?
根据:http ://www.oodesign.com/iterator-pattern.html
迭代器模式的思想是负责访问和传递集合的对象并将其放入迭代器对象中。迭代器对象将维护迭代的状态,跟踪当前项,并有一种方法来识别接下来要迭代的元素。
您可以从这种模式中获得的一些好处:
如果底层表示被暴露,客户端代码可以耦合到它。然后:
数据抽象使代码对表示的变化更具弹性。
简而言之:如果您决定更改表示,则必须更改依赖于底层表示的所有代码。
例如,您一开始决定使用TreeMap
,但后来您不想再订购(在大多数情况下),所以您更改为HashMap
. 有人正在遍历您的地图,试图获取越来越多的列表。!!
使用迭代器模式,您始终可以让用户能够以某种逻辑(或者只是随机的,这是一种逻辑)循环遍历某些东西,而无需知道它在幕后是什么。
现在,如果您使用HashMap
而不是TreeMap
,您可以向用户公开排序视图。如果您提供此内容SortedIterator
并告诉用户“使用此内容将保证对结果进行排序,但我无法告诉您下面的内容”,您可以将表示更改为您喜欢的任何内容,只要此合同SortedIterator
是由您维护。