首页 > 其他 > 详细

B10:迭代器模式 Iterator

时间:2017-11-06 10:27:44      阅读:265      评论:0      收藏:0      [点我收藏+]

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

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

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

原文:http://www.cnblogs.com/itfenqing/p/7791722.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!