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

  • 相关阅读:
    java代码 分解EXCEL(一)
    hdu 1226 BFS + bfs记录路径
    MVC-MODEL
    弱类型、强类型、动态类型、静态类型语言的区别是什么?
    Objective-C中的命名前缀说明
    self & this 上下文
    Object comparison
    Dynamic typing 动态类型
    iOS支付宝 9.x 版本首页效果
    Using an Image for the Layer’s Content
  • 原文地址:https://www.cnblogs.com/paulversion/p/8477778.html
Copyright © 2011-2022 走看看