首页 > 代码库 > php中的设计模式之--迭代器模式
php中的设计模式之--迭代器模式
<?php /** 迭代器模式 :迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为: 提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。 迭代器模式是为容器而生。很明显,对容器对象的访问必然涉及到遍历算法。你可以一股脑的将遍历方法塞到容器对象中去; 或者根本不去提供什么遍历算法,让使用容器的人自己去实现去吧。 (1) 需要一个容器 (2) 遍历方法即可 迭代器模式由以下角色组成: 1) 迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口。 2) 具体迭代器角色(Concrete Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置。 3) 容器角色(Container):容器角色负责提供创建具体迭代器角色的接口。 4) 具体容器角色(Concrete Container):具体容器角色实现创建具体迭代器角色的接口——这个具体迭代器角色于该容器的结构相关。 */ //(1)迭代器(Iterator):在迭代过程上的抽象,包括next(),isFinished(),current()等方法。 //(2)具体迭代器(ConcreteIterators):在一个特定的对象集,如数组,树,组合,集合等上实现迭代。 //(1) 如果使用php 内部的iterator class myiterator implements Iterator{ private $myiterator; // 空实例 private $position; // 下标 public function __construct(array $iterator){ $this->myiterator = $iterator; $this->position = 0 ; } // 获取当前 function current() { return $this->myiterator[$this->position]; } // 下个index function next(){ ++$this->position ; } //获得key(下标) function key(){ return $this->position; } function value(){ return $this->myiterator[$this->position]; } // 重新遍历 function rewind() { $this->position = 0; } function valid(){ return isset($this->myiterator[$this->position]); } } // 应用 /* $aData = http://www.mamicode.com/array('a','b','c');>php中的设计模式之--迭代器模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。