博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php实现设计模式之 迭代器模式
阅读量:5232 次
发布时间:2019-06-14

本文共 1470 字,大约阅读时间需要 4 分钟。

aggregate = $aggregate; $this->aggregateCount = $this->aggregate->getCounts(); } public function first(){ $this->index = 0; } public function next(){ if($this->index < $this->aggregateCount){ $this->index = $this->index + 1; } } public function isDone(){ if($this->index == $this->aggregateCount){ return true; } return false; } public function currentItem(){ return $this->aggregate->getItem($this->index); } public function getAggregateCount(){ return $this->aggregateCount; }} /** * 聚合对象的抽象类,定义了创建相应迭代器对象的接口,每一个实现该聚合对象抽象类的对象都要实现这个抽象方法 */abstract class Aggregate{ public abstract function createIterator();} /** * 具体的聚合对象,实现创建相应迭代器对象的功能 */class ConcreteAggregate extends Aggregate{ //聚合对象的具体内容 private $arrayAgg = null; /** * 构造函数:传入聚合对象具体的内容,在这个例子中是数组 * @param $arrayAgg 聚合对象的具体内容 */ public function __construct($arrayAgg){ $this->arrayAgg = $arrayAgg; } public function createIterator(){ //实现创建Iterator的工厂方法 return new ConcreteIterator($this); } public function getItem($index){ if($index < sizeof($this->arrayAgg)){ return $this->arrayAgg[$index]; } } public function getCounts(){ return sizeof($this->arrayAgg); }} /** * 看看具体的使用方法 */$aggregate = new ConcreteAggregate(array('张三','李四','王五'));$iterator = $aggregate->createIterator(); $iterator->first();while(!$iterator->isDone()){ $obj = $iterator->currentItem(); echo "The obj == ".$obj."
"; $iterator->next();}?>

  UML

转载于:https://www.cnblogs.com/taijun/p/4073949.html

你可能感兴趣的文章
转:基于用户投票的排名算法系列
查看>>
WSDL 详解
查看>>
[转]ASP数组全集,多维数组和一维数组
查看>>
C# winform DataGridView 常见属性
查看>>
逻辑运算和while循环.
查看>>
Nhiberate (一)
查看>>
c#后台计算2个日期之间的天数差
查看>>
安卓开发中遇到的小问题
查看>>
ARTS打卡第3周
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
cookies相关概念
查看>>
CAN总线波形中ACK位电平为什么会偏高?
查看>>
MyBatis课程2
查看>>
桥接模式-Bridge(Java实现)
查看>>
svn客户端清空账号信息的两种方法
查看>>
springboot添加servlet的两种方法
查看>>
java的Array和List相互转换
查看>>
layui父页面执行子页面方法
查看>>
如何破解域管理员密码
查看>>
Windows Server 2008 R2忘记管理员密码后的解决方法
查看>>