码迷,mamicode.com
首页 > 其他好文 > 详细

迭代器模式

时间:2016-12-24 22:41:36      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:rom   this   connect   编程   集合   str   users   内部实现   nec   

定义:在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素
好处:相比于传统的编程模式,迭代器模式可以隐藏遍历元素的所需的操作

$users = new \IMooc\AllUser();
foreach ($users as $user)
{
var_dump($user);
}

<?php
namespace IMooc;

class AllUser implements \Iterator
{
protected $ids;
protected $data = array();
protected $index;

function __construct()
{
$db = new \IMooc\Database\MySQLi();
$db->connect(‘127.0.0.1‘, ‘root‘, ‘root‘,‘test‘);
$result = $db->query("select id from user");
$this->ids = $result->fetch_all(MYSQLI_ASSOC);
}
//返回当前的数据
function current()
{
$id = $this->ids[$this->index][‘id‘];
return Factory::getUser($id);
}

//将索引值向下移动
function next()
{
$this->index ++;
}

//查询当前是否有数据
function valid()
{
return $this->index < count($this->ids);
}

//将迭代器移动到集合的开头
function rewind()
{
$this->index = 0;
}

//返回当前key
function key()
{
return $this->index;
}
}

<?php
namespace IMooc;

class Factory
{
static function getUser($id)
{
$key = ‘user_‘.$id;
$user = Register::get($key);
if (!$user)
{
$user = new User($id);
Register::set($key, $user);
}
return $user;
}
}




迭代器模式

标签:rom   this   connect   编程   集合   str   users   内部实现   nec   

原文地址:http://www.cnblogs.com/phonecom/p/cc5902329c5cee3164670b128291264f.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!