Rumah >pembangunan bahagian belakang >tutorial php >PHP设计模式--迭代器模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。
迭代器模式:迭代器模式是遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而客户端程序员不必知道或关心该集合序列底层的结构。
UML类图:
角色:
Iterator(迭代器):迭代器定义访问和遍历元素的接口
ConcreteIterator(具体迭代器):具体迭代器实现迭代器接口,对该聚合遍历时跟踪当前位置
Aggregate (聚合):聚合定义创建相应迭代器对象的接口(可选)
ConcreteAggregate(具体聚合):具体聚合实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当的实例(可选)
核心代码:
<?php /** * Created by PhpStorm. * User: Jiang * Date: 2015/6/8 * Time: 21:31 *///抽象迭代器abstract class IIterator{ public abstract function First(); public abstract function Next(); public abstract function IsDone(); public abstract function CurrentItem();}//具体迭代器class ConcreteIterator extends IIterator{ private $aggre; private $current = 0; public function __construct(array $_aggre) { $this->aggre = $_aggre; } //返回第一个 public function First() { return $this->aggre[0]; } //返回下一个 public function Next() { $this->current++; if($this->current<count>aggre)) { return $this->aggre[$this->current]; } return false; } //返回是否IsDone public function IsDone() { return $this->current>=count($this->aggre)?true:false; } //返回当前聚集对象 public function CurrentItem() { return $this->aggre[$this->current]; }}</count>
header("Content-Type:text/html;charset=utf-8");//--------------------------迭代器模式-------------------require_once "./Iterator/Iterator.php";$iterator= new ConcreteIterator(array('周杰伦','王菲','周润发'));$item = $iterator->First();echo $item."<br>";while(!$iterator->IsDone()){ echo "{$iterator->CurrentItem()}:请买票!<br>"; $iterator->Next();}
1.访问一个聚合对象的内容而无需暴露它的内部表示
2.支持对聚合对象的多种遍历
3.为遍历不同的聚合结构提供一个统一的接口
欢迎关注我的视频课程,地址如下,谢谢。