zoukankan      html  css  js  c++  java
  • 迭代器模式

    迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示.

    <?php
    /**
    * Created by PhpStorm.
    * User: Administrator
    * Date: 2018/2/27
    * Time: 10:45
    */

    namespace frontendmodels;


    abstract class Iterator
    {

    public abstract function First();

    public abstract function Next();

    public abstract function IsDone();

    public abstract function CurrentItem();

    }



    <?php
    /**
    * Created by PhpStorm.
    * User: Administrator
    * Date: 2018/2/27
    * Time: 10:47
    */

    namespace frontendmodels;


    class ConcreteIterator extends Iterator
    {

    private $arr;
    private $current = 0;

    public function __construct($arr)
    {

    $this->arr = $arr;
    }

    //访问第一个元素
    public function First()
    {
    if (empty($this->arr))
    return null;

    return $this->arr[0];
    }

    //访问下一个元素
    public function Next()
    {
    $this->current++;

    if($this->current>count($this->arr)){

    return $this->arr[$this->current];
    }

    return false;

    }

    //判断是否遍历完毕
    public function IsDone()
    {
    // TODO: Implement IsDone() method.

    return $this->current >= count($this->arr) ? true:false;
    }

    //返回当前聚集对象
    public function CurrentItem()
    {

    return $this->arr[$this->current];
    }

    }


    $iterator = new ConcreteIterator(['pig','dog','cat','fish','goose','swan','duck']);

    echo $iterator->First()."<br>";

    $iterator->Next();

    echo $iterator->CurrentItem()."<br>";


     使用场景:   

             1.访问一个聚合对象的内容而无需暴露它的内部表示

             2.支持对聚合对象的多种遍历

             3.为遍历不同的聚合结构提供一个统一的接口

  • 相关阅读:
    【新阁教育】爱普生机器人建立工具坐标系教程
    BPF CO-RE 示例代码解析
    gRPC Load Balancing
    Linux Clone函数
    高性能 Nginx HTTPS 调优
    内网渗透测试:内网横向移动基础总结
    Python 运算符
    华为云-容器引擎CCE-部署Nginx应用
    华为云-云容器引擎(CCE)-高危操作及解决方案
    周杰伦新歌《说好不哭》上线,程序员哭了......
  • 原文地址:https://www.cnblogs.com/paulversion/p/8477778.html
Copyright © 2011-2022 走看看