php 设计模式之 迭代器(Iterator)
1. 迭代器模式
提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示
2. 实列
interface MsgIterator {
public function First(); // 返回第一个元素
public function Next(); // 返回下一个元素
public function IsDone(); // 检查当前位置是否有效
public function Current(); // 返回当前元素
}
class MsgIterator implements MsgIterator { // 迭代器类
private $list; // 数组
private $index; // 键
public function __construct($list) {
$this->list = $list;
$this->index = 0;
}
public function First() { // 返回第一个元素
$this->index = 0;
}
public function Next() { // 返回下一个元素
$this->index++;
}
public function IsDone() { // 检查当前位置是否有效
return isset($this -> list[$this -> index]);
}
public function Current() { // 返回当前元素
return $this->list[$this->index];
}
}
interface Message {
public function CreateIterator($list);
}
class MessageAsc implements Message { // 执行类
public function CreateIterator($list) {
return new MsgIterator($list);
}
}
// 要发的短信号码列表
$mobileList = [
'13111111111',
'13111111112',
'13111111113',
];
$serverA = new MessageAsc();
$iteratorA = $serverA->CreateIterator($mobileList);
while (!$iteratorA->IsDone()) {
echo $iteratorA->CurrentItem(), PHP_EOL;
$iteratorA->Next();
}
3. 使用场景
- 访问聚合对象,不需要关注内部数据结构
- 斐波纳契数列

浙公网安备 33010602011771号