PHP设计模式--迭代器模式

php中文网
发布: 2016-06-23 13:33:02
原创
1044人浏览过

声明:本系列博客参考资料《大话设计模式》,作者程杰。

       迭代器模式:迭代器模式是遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而客户端程序员不必知道或关心该集合序列底层的结构。


       UML类图:

立即学习PHP免费学习笔记(深入)”;

       


         角色:      

        Iterator(迭代器):迭代器定义访问和遍历元素的接口

        ConcreteIterator(具体迭代器):具体迭代器实现迭代器接口,对该聚合遍历时跟踪当前位置

        Aggregate (聚合):聚合定义创建相应迭代器对象的接口(可选)

        ConcreteAggregate(具体聚合):具体聚合实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当的实例(可选)

       

比格设计
比格设计

比格设计是135编辑器旗下一款一站式、多场景、智能化的在线图片编辑器

比格设计 124
查看详情 比格设计

         核心代码:

         

<?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($this->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];    }}
登录后复制

          调用客户端测试代码:

         

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.为遍历不同的聚合结构提供一个统一的接口


       欢迎关注我的视频课程,地址如下,谢谢。


   PHP面向对象设计模式


PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号