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

  • 相关阅读:
    myDOM
    13模块
    12异常
    11面向对象
    10文件操作
    蓝桥杯心得
    生物芯片-2014国赛Java语言C组四题
    奇妙的数字-2015省赛C语言A组第三题
    方程整数解-2015省赛C语言A组第一题
    机器人数目-2015决赛Java语言C组第一题
  • 原文地址:https://www.cnblogs.com/paulversion/p/8477778.html
Copyright © 2011-2022 走看看