设计模式-Iterator(迭代器模式)
迭代器
定义:迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而不暴漏其内部的表示
个人理解:现在一般的高级语言都内置迭代器接口,这边就不特别介绍了,其实就是提供一个接口可以把内部的元素一个一个的展示出来,不管内部怎么存储怎么处理的,我只给你我想给你看到的,
<?php
/**
* 在实际PHP编码中,我们经常遇到各种变量代码,循环流程foreach出现在好多PHP编码中,而如果使用迭代器模式,可以对不同的数据集合进行封装,外用调用者只需使用迭代器提供的接口即可。
迭代器模式为不同的容器对象规范了统一的接口,支持多态迭代,对容器对象提供多种遍历,且不会暴露容器对象的具体实现细节,从而达到高扩展,强规范和安全的目的。
缺点是:这样提高了系统的复杂性和前端php程序员编码难度。
*/
class ConcreteIterator implements Iterator{
private $_position = 0;
private $_arr;
public function __construct(array $arr){
$this->_arr = $arr;
}
//当前游标对应的键值
public function current(){
return $this->_arr[$this->_position].' Add Coding Everything You Need';
}
//下一个游标
public function next(){
++$this->_position;
}
//当前游标
public function key(){
return $this->_position;
}
//当前游标是否合理
public function valid(){
return isset($this->_arr[$this->_position]);
}
//将游标重置,放在起始位置
public function rewind(){
$this->_position = 0;
}
}
$data = array(
'http://www.baidu.com',
'http://www.qq.com',
'http://www.google.com',
'http://www.bangdanzhijia.com',
);
$caseIterator = new ConcreteIterator($data);
foreach ($caseIterator as $row){
$caseIterator->next();
echo $row;
}
