以下のようなクラスからUserList取得してforeachで回すパターンは、Userのフィールドを増やそうとしたときに、メソッドの追加やテストが必要になったりする。 大規模なコードを変更するときには、この実装では変更箇所やテストが多く発生するため、これを最初に抑えるデザインパターンがIteratorパターンである。
class User
{
protected $name;
function __construct($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
}
class Roster
{
protected $userList = [];
public function setUserList($user)
{
$this->userList[] = $user;
}
public function getUserList()
{
return $this->userList;
}
}