迭代器模式

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

$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;
}
}


来自为知笔记(Wiz)


posted on 2016-12-24 22:13  果然朝辉  阅读(126)  评论(0编辑  收藏  举报

导航