本文同步更新於blog
迭代器模式会将类别分为两类:
分别是集合类别 (Aggregate / Collection)及迭代器类别 (Iterator)。
集合类别负责提供统一介面,供所有集合元素使用,使客户与集合元素的实现解耦。
迭代器类别则负责提供在集合元素中游走的方法。
集合元素 -> 集合类别
歌曲 -> 歌单
菜式 -> 菜单
书本 -> 书单
优点:
分离了集合物件的遍历行为,可以在不暴露集合内部的情况下,供外部存取。
新增/修改遍历规则时,不会影响到集合元素。
缺点:
若只是简单的遍历,可能会是一种过度设计。
其实此模式的实现,现在大都已被封装,只要实现对应的介面就好了。
以PHP而言,主要有以下几个介面与迭代器模式有关。
介面名称 | 用途 |
---|---|
Traversable | 所有迭代器介面的源头,主要用来判断能不能用foreach遍历。 |
IteratorAggregate | 集合类别的介面,主要用来提供迭代器,需与Iterator介面一起实作。 |
Iterator | 迭代器的介面,定义了遍历时会用到的方法,需与IteratorAggregate介面一起实作。 |
其他SPL (Standard PHP Library) 的Iterator。
ʕ •ᴥ•ʔ:让我们一起欣赏这个古老的模式!
话说从前 自从电脑问世以来,若要将程序无缝的转移到其他机器上成功运行,那麽环境架设就是一个必须要优先...
Promise JavaScript 是属於同步的程序语言,因此一次仅能做一件事情,但遇到非同步的事...
第四天的小试身手解答:将Unity介面改为2By3,Project从Two Column Layou...
大家好,我是毛毛。ヾ(´∀ ˋ)ノ 废话不多说开始今天的解题Day~ 83. Remove Dupl...
昨天轻松的安装完Xcode环境後,想必各位已经迫不及待想大显身手了吧! 但是吃紧弄破碗,就让我们先来...