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

适用场景:
当你需要访问一个聚合对象,而这个对象不论是什么,你都需要遍历的时候,就用迭代器.

UML:

示例代码:

class User
{
private $name,$regTime,$money; public function __construct($name, $regTime)
{
$this->name = $name;
$this->regTime = $regTime;
} public function setMoney($money)
{
$this->money = $money;
} public function __toString()
{
return "{$this->name} : {$this->regTime} : {$this->money}";
}
} class UserIterator implements Iterator
{
private $users = array();
private $valid = false; public function __construct()
{
try{
$sql = "SELECT * FROM yx_users";
$pdo = new PDO('mysql:host=localhost;dbname=db_zuiyouxin', 'root', 'root');
$res = $pdo->query($sql); foreach ($res as $row) {
$user = new User($row['name'], $row['created_at']);
$user->setMoney($row['money']);
$this->users[$row['id']] = $user;
} $pdo = null;
} catch (Exception $e) {
die('Error:' . $e->getMessage());
}
} public function current()
{
return current($this->users);
} public function next()
{
$this->valid = (next($this->users) === false) ? false : true;
} public function key()
{
return key($this->users);
} public function valid()
{
return $this->valid;
} public function rewind()
{
$this->valid = (reset($this->users) === false) ? false : true;
} } $users = new UserIterator(); foreach ($users as $key => $val) {
echo $key;
echo $val;
echo "<br>";
}

  

B10:迭代器模式 Iterator的更多相关文章

  1. 设计模式(十):从电影院中认识"迭代器模式"(Iterator Pattern)

    上篇博客我们从醋溜土豆丝与清炒苦瓜中认识了“模板方法模式”,那么在今天这篇博客中我们要从电影院中来认识"迭代器模式"(Iterator Pattern).“迭代器模式”顾名思义就是 ...

  2. 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

      设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的 ...

  3. 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)

    原文:乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 作者:weba ...

  4. 迭代器模式 Iterator 行为型 设计模式(二十)

    迭代器模式(Iterator)   走遍天下,世界那么大,我想去看看   在计算机中,Iterator意为迭代器,迭代有重复的含义,在程序中,更有“遍历”的含义 如果给定一个数组,我们可以通过for循 ...

  5. 迭代器模式-Iterator(Java实现)

    迭代器模式-Iterator 用于访问一个集合中的各个元素, 而又不会暴露集合的内部的细节. 本文展示的例子就是, 在猫群组里, 用迭代器遍历每一只猫. 本文章的例子的继承关系图如下: 其中: Cat ...

  6. Java 设计模式系列(十五)迭代器模式(Iterator)

    Java 设计模式系列(十五)迭代器模式(Iterator) 迭代器模式又叫游标(Cursor)模式,是对象的行为模式.迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(interna ...

  7. 设计模式学习--迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)

    设计模式学习--迭代器模式(Iterator Pattern) 概述 ——————————————————————————————————————————————————— 迭代器模式提供一种方法顺序 ...

  8. 二十四种设计模式:迭代器模式(Iterator Pattern)

    迭代器模式(Iterator Pattern) 介绍提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示. 示例有一个Message实体类,某聚合对象内的各个元素均为该实体对象,现 ...

  9. 设计模式 - 迭代器模式(iterator pattern) 具体解释

    迭代器模式(iterator pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 迭代器模式(iterator pattern) : 提供一 ...

随机推荐

  1. WPF中使用WPFMediaKit视频截图案例

    前台 代码: <Window x:Class="WpfAppWPFMediaKit.MainWindow" xmlns="http://schemas.micros ...

  2. jQuery中操作事件

    JavaScript中操作事件的方式是这样的: 元素.on事件名=function(){ //事件执行的代码 } 但是jQuery有点不同,他的格式是这样的: 元素.on("事件名" ...

  3. 一句话木马与caidao

    实验吧有个试验环境:http://www.shiyanbar.com/experiment-course/experiment-course/vid/1812 菜刀的主要功能是用来连接一句话木马的,a ...

  4. flutte 命令行指令卡死

  5. (2)SpringBoot 配置

     一.SpringBoot全局配置文件 SpringBoot两个全局配置文件,application.properties和application.yml 例如端口号配置 (1)application ...

  6. tomcat安装规范

    创建用户 useradd -u 501 tomcat passwd tomcat tomcat安装 tar zxf apache-tomcat-8.5.5.tar.gz -C /usr/local/ ...

  7. 棋盘V

    问题 A: 棋盘V 时间限制: 1 Sec  内存限制: 128 MB提交: 150  解决: 3[提交] [状态] [讨论版] [命题人:] 题目描述 有一块棋盘,棋盘的边长为100000,行和列的 ...

  8. [Contest20180122]超级绵羊异或

    题意:求$a\ xor\left(a+b\right)xor\cdots xor\left(a+b\left(n-1\right)\right)$ 对每一位求答案,第$k$的答案是$\sum\limi ...

  9. centos7下解决python3和python2同时存在但是无法使用pip3的问题

    一.首先,官网下载python3的所需版本. wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz 想下载到那个文件夹下就先进入到 ...

  10. 求满足n^2>12000的n的最大值 Exercise05_13

    /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:求满足n^2>12000的n的最大值 * */ public class Exercise05_13 { public ...