设计模式-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; }