大话设计模式-迭代器模式

//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();
}

你可能感兴趣的:(大话设计模式-迭代器模式)