PHP设计模式之迭代器模式

        在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素而又不暴露该对象的内部表示,这就是PHP迭代器模式的定义。

书中自有颜如玉,书中自有黄金屋

适用场景:

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

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

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

书中自有颜如玉,书中自有黄金屋

迭代器模式实例:

class ConcreteIterator implements Iterator

        private $position = 0; 

        private $arr; 

        function __construct(array $arr)

        { 

                $this->arr = $arr; 

        }  

        function rewind()

        { 

                $this->position = 0; 

        }  

        function current()

        { 

                return $this->arr[$this->position]; 

        }  

        function key()

        { 

                return $this->position; 

        }  

        function next()

        { 

                ++$this->position; 

        }  

        function valid()

        { 

                return isset($this->arr[$this->position]); 

        }

}

$arr = array('xiao hong','xiao ming','xiaohua');

$concreteIterator = new ConcreteIterator($arr);

foreach ($concreteIterator as $key => $value) { 

        echo $key."=>".$value."\n";

}

书中自有颜如玉,书中自有黄金屋

        图片与文章无关,在阅读技术文档的时候欣赏一下美女也是一个不错的选择,希望可以对你有帮助,如果有错误的地方欢迎指正。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,350评论 1 10
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,375评论 2 17
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,733评论 0 38
  • 1 场景问题# 1.1 工资表数据的整合## 考虑这样一个实际应用:整合工资表数据。 这个项目的背景是这样的,项目...
    七寸知架构阅读 7,296评论 0 53
  • 十年后阿利茄汁面的店铺已经遍布郑州的大街小巷,店面的装潢也越来越接近肯德基麦当劳,走出了一条和烩面截然不同的路。我...
    薛御风阅读 3,203评论 0 0