迭代器模式是一種行為型模式,它是一種最簡單也最常見的設計模式。它可以讓使用者透過特定的介面巡訪容器中的每一個元素而不用了解底層的實際操作。
適用性
在希望利用語言本身的遍歷函數方便自訂結構時,例如PHP中的foreach函數
類圖
PHPee
rrrereee在Yee Yii框架中的我們可以看到其迭代器的實現,在collections目錄下的CMapIterator.php檔案中,其實現如下:
<?php class sample implements Iterator { private $_items ; public function __construct(&$data) { $this->_items = $data; } public function current() { return current($this->_items); } public function next() { next($this->_items); } public function key() { return key($this->_items); } public function rewind() { reset($this->_items); } public function valid() { return ($this->current() !== FALSE); } } // client $data = array(1, 2, 3, 4, 5); $sa = new sample($data); foreach ($sa AS $key => $row) { echo $key, ' ', $row, '<br />'; } ?>
這與先前的簡單實作相比,其位置的變化是透過控制key來實現的,這種實現的作用是為了避免false作為數組值時無法迭代。