php中的设计模式之迭代器模式

php中文网
发布: 2016-06-23 13:40:38
原创
966人浏览过

<?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 内部的iteratorclass 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 = array('a','b','c');$myiterator = new myiterator($aData); while($myiterator->valid()){    $myiterator->next();}*/// (2)搭建自己的容器 interface container {	public function  getIterator();}class myContainer implements container{		private $iterator ;	public function __construct($data){		$this->iterator = new myiterator($data) ;	}		public function getIterator(){		return   $this->iterator;	}	}// 应用实例$data = array('a','b','c');$myContainer = new myContainer($data) ;// 获得迭代器$myiterator =  $myContainer->getIterator();while($myiterator->valid()){    var_dump($myiterator->current());    $myiterator->next();}
登录后复制

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号