什么是迭代器模式
定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部显示
使用场景:
1.访问一个聚合对象内容而无须暴露它的内部显示
2.需要为聚合对象提供多种遍历方式
3.为遍历不同的聚合结构提供一个统一的接口
迭代器:类继承PHP的Iterator接口,批量操作。
1. 迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素。
2. 相比传统的编程模式,迭代器模式可以隐藏遍历元素的所需操作。
接口Iterator
current() 返回当前元素
key() 返回当前元素的键
next() 向前移动到下一个元素
rewind() 返回到迭代器的第一个元素
1 list=$array;14 }15 /**16 * 将索引指定到首个元素17 * {@inheritDoc}18 * @see Iterator::rewind()19 */20 function rewind(){21 echo '第'.++$this->i.'步:执行 '.__METHOD__.'';22 $this->valid=(false !==reset($this->list));23 }24 /**25 * 返回当前元素26 * {@inheritDoc}27 * @see Iterator::current()28 */29 function current(){30 echo '第'.++$this->i.'步:执行 '.__METHOD__.'';31 return current($this->list);32 }33 /**34 * 索引指向下一个元素35 * {@inheritDoc}36 * @see Iterator::next()37 */38 function next(){39 echo '第'.++$this->i.'步:执行 '.__METHOD__.'';40 $this->valid=(false !== next($this->list));41 }42 /**43 * 返回当前元素键值44 * {@inheritDoc}45 * @see Iterator::key()46 */47 function key(){48 echo '第'.++$this->i.'步:执行 '.__METHOD__.'';49 return key($this->list);50 }51 /**52 * 判断下个是否有下个元素53 * {@inheritDoc}54 * @see Iterator::valid()55 */56 function valid(){57 echo '第'.++$this->i.'步:执行 '.__METHOD__.'';58 return $this->valid;59 }60 }61 62 $list=array('name'=>'guoguo','pwd'=>'111111');63 $test=new Test($list);64 //foreach循环方式65 foreach ($test as $key=>$val){66 echo '输出索引为'.$key.'的元素值为:'.$val.'';67 }68 69 echo '----------------结束分隔线-----------------------';70 $second=new Test($list);71 //while循环方式72 $second->rewind();73 while($second->valid()){74 echo '输出索引为'.$second->key().'的元素值为:'.$second->current().'';75 $second->next();76 }