//Iterator迭代器抽象类
abstract class Iterators {
//用于定义得到开始对象、得到下一个对象、判断是否到结尾、当前对象等抽象方法,统一接口
public abstract function first();
public abstract function next();
public abstract function isDone();
public abstract function currentItem();
}
class ConcreteIterator extends Iterators {
private $aggregate;
private $current = 0;
function __construct($aggregate) {
$this->aggregate = $aggregate;
}
public function first() {
return $this->aggregate[0];
}
public function next() {
$this->current++;
return $this->current < count($this->aggregate) ? $this->aggregate[$this->current] : null;
}
public function isDone() {
return $this->current >= count($this->aggregate) ? true : false;
}
public function currentItem() {
return $this->aggregate[$this->current];
}
}
$a[0] = '大鸟';
$a[1] = '小菜';
$a[2] = '行李';
$a[3] = '老外';
$a[4] = '公交内部员工';
$a[5] = '小偷';
//声明迭代器对象
$i = new ConcreteIterator($a);
$item = $i->first();
while(!$i->isDone()) {
echo $i->currentItem().'请买车票<br/>';
$i->next();
}
大话设计模式-迭代器模式
最新推荐文章于 2023-03-08 17:40:33 发布