我是靠谱客的博主 老迟到鸵鸟,最近开发中收集的这篇文章主要介绍设计模式之迭代器模式--foreach循环的原理设计模式之迭代器模式–foreach循环的原理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

设计模式之迭代器模式–foreach循环的原理

迭代器模式是迭代,循环,一般在语言层面都实现了。

提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。

为什么要使用迭代器模式

因为要循环啊,总有循环遍历的需求,所以就要使用迭代器模式了。

不过这些语言都内置了,比如foreach这种。那么foreach是怎么实现可以遍历的呢?

php实现迭代器模式

迭代器主要就是一个一个循环,那么需要有下一个的方法,也就是next,有下一个就需要判断是否可以循环,那么要有一个hasNext方法。

首先定义一个接口

/**
 * 迭代器模式
 * 迭代器接口
 */
interface Iterator{
    function next();

    function hasNext();
}

然后实现一个迭代器,继承这个接口


/**
 * 迭代器模式
 * 迭代器接口
 */
class Iterate implements Iterator{

    private $arr = [];
    private $current = 0;

    function __construct(Array $arr) {
        $this->arr = $arr;
    }

    /**
     * 获取下一个元素
     */
    function next() {
        $value = null;
        if ($this->hasNext()) {
            $value = $this->arr[$this->current];
            $this->current++;
        }
        return $value;
    }

    /**
     * 判断是否有下一个元素
     */
    function hasNext() {
        return $this->current < count($this->arr) ? true : false;
    }
}

客户端使用

$arr= [1,2,3];
$iterator = new iterator($arr);
while($iterator->hasNext()) {
    dump($iterator->next());
}

dump('foreach实现');

foreach($arr as $value) {
    dump($value);
}

在这里插入图片描述
可以看到和foreach的效果一模一样了。这就是迭代器模式,不过php已经有iterator这个接口了。

代码放在了我的github上面。

  • 设计模式

最后

以上就是老迟到鸵鸟为你收集整理的设计模式之迭代器模式--foreach循环的原理设计模式之迭代器模式–foreach循环的原理的全部内容,希望文章能够帮你解决设计模式之迭代器模式--foreach循环的原理设计模式之迭代器模式–foreach循环的原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部