迭代器设计模式可帮助构造特定的对象,那些对象可以提供单一标准接口循环或迭代任何类型的可计数数据。
使用场景:
1.访问一个聚合对象的内容而无需暴露它的内部表示。
2.支持对聚合对象的多种遍历。
3.为遍历不一样的聚合结构提供一个统一的接口(即,多态迭代)。
/**
* 迭代器模式
*
* 提供一个方法顺序访问一聚合对象中的各个元素,而又不暴露对象的内部表示
*/
interface IfIterator
{
public function next();
public function first();
public function current();
public function isDone();
}
class SomeIterator implements IfIterator
{
private $_arr=array();
public function __construct($arr)
{
$this->_arr =$arr;
}
public function first()
{
return $this->_arr[0];
}
public function current()
{
return current($this->_arr);
}
public function next()
{
return next($this->_arr);
}
public function isDone()
{
}
}
$objSomeIterator=new SomeIterator(array(1,2,3,4,6,7));
echo $objSomeIterator->first(),"<br/>";//1
echo $objSomeIterator->next(),"<br/>";//2
echo $objSomeIterator->current(),"<br/>";//2
echo $objSomeIterator->next(),"<br/>";//3
echo $objSomeIterator->current(),"<br/>";//3