php中的設計模式之 迭代器模式

2021-06-28 12:06:47 字數 1373 閱讀 4050

<?php

/**迭代器模式 :迭代器(iterator)模式,又叫做游標(cursor)模式。gof給出的定義為:

提供一種方法訪問乙個容器(container)物件中各個元素,而又不需暴露該物件的內部細節。

迭代器模式是為容器而生。很明顯,對容器物件的訪問必然涉及到遍歷演算法。你可以一股腦的將遍歷方法塞到容器物件中去;

或者根本不去提供什麼遍歷演算法,讓使用容器的人自己去實現去吧。

(1) 需要乙個容器

(2) 遍歷方法即可

迭代器模式由以下角色組成:

1) 迭代器角色(iterator):迭代器角色負責定義訪問和遍歷元素的介面。

2) 具體迭代器角色(concrete iterator):具體迭代器角色要實現迭代器介面,並要記錄遍歷中的當前位置。

3) 容器角色(container):容器角色負責提供建立具體迭代器角色的介面。

*///(1)迭代器(iterator):在迭代過程上的抽象,包括next(),isfinished(),current()等方法。

//(2)具體迭代器(concreteiterators):在乙個特定的物件集,如陣列,樹,組合,集合等上實現迭代。

//(1) 如果使用php 內部的iterator

class myiterator implements iterator

// 獲取當前

function current()

// 下個index

function next()

//獲得key(下標)

function key()

function value()

// 重新遍歷

function rewind()

function valid()

}// 應用

/*$adata = array('a','b','c');

$myiterator = new myiterator($adata);

while($myiterator->valid())

*/// (2)搭建自己的容器

inte***ce container

class mycontainer implements container

public function getiterator() }

// 應用例項

$data = array('a','b','c');

$mycontainer = new mycontainer($data) ;

// 獲得迭代器

$myiterator = $mycontainer->getiterator();

while($myiterator->valid())

PHP 設計模式之迭代器模式

在不需要了解內部實現的前提條件下,可以遍歷乙個聚合物件的內部元素 相比於傳統的程式設計模式,迭代器模式可以隱藏遍歷元素所需的操作 class alluser implements iterator public function current public function next 第乙個呼叫 ...

PHP設計模式之PHP迭代器模式講解

迭代器有時又稱游標 cursor 是程式設計的軟體設計模式,可在容器物件 container,例如list或vector 上遍訪的介面,設計人員無需關心容器物件的內容。各種語言實作iterator的方式皆不盡同,有些物件導向語言像j a,c python,delphi都已將iterator的特性內建...

PHP設計模式 迭代器模式

web開發筆記 www.chhua.com 每日練習 php設計模式 迭代器模式 呵呵,迭代器模式是php開發中非常有用的乙個設計模式,其主要的應用範圍如下 一 使用返回迭代器的包或庫時 如php5中的spl迭代器 二 無法在一次的呼叫獲取容器的所有元素時 三 要處理數量巨大的無素時 資料庫中的表以...