/ ** * 반복자 패턴 (반복자 패턴)은 자바와 닷넷 프로그래밍 환경 매우 일반적인 디자인 패턴이다. *이 모드 오브젝트 세트의 기본 표현을 알지 못하고, 오브젝트 집합의 원소의 순차적 액세스를 위해 사용된다. 반복자 패턴은 행동 패턴을 속한다. * /
(1) Iterator.class.php (인터페이스)
<? php에
namespace Iterator;
interface Iterator
{
public function First();
public function Next();
public function IsDone();
public function CurrentItem();
}
(2) ConcreteIteratior.class.php
<?php
namespace Iterator;
class ConcreteIterator implements Iterator{
private $_users;
private $_current = 0;
public function __construct(array $users)
{
$this->_users = $users;
}
public function First()
{
return $this->_users[0];
}
//返回下一个
public function Next()
{
$this->_current++;
if($this->_current<count($this->_users))
{
return $this->_users[$this->_current];
}
return false;
}
//返回是否IsDone
public function IsDone()
{
return $this->_current>=count($this->_users)?true:false;
}
//返回当前聚集对象
public function CurrentItem()
{
return $this->_users[$this->_current];
}
}
(3) iterator.php (클라이언트)
<?php
spl_autoload_register(function ($className){
$className = str_replace('\\','/',$className);
include $className.".class.php";
});
use Iterator\ConcreteIterator;
$iterator= new ConcreteIterator(array('周杰伦','王菲','周润发'));
$item = $iterator->First();
echo $item."<br/>";
while(!$iterator->IsDone())
{
echo "{$iterator->CurrentItem()}:请买票!<br/>";
$iterator->Next();
}