程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 3.0特性 - 迭代器(上)及一些研究過程中的副產品(1)

C# 3.0特性 - 迭代器(上)及一些研究過程中的副產品(1)

編輯:關於C語言

提到迭代器我們不能不想到迭代器模式,那我就以迭代器模式作為開場白。

在我們的應用程序中常常有這樣一些數據結構:

它們是一個數據 的集合,如果你知道它們內部的實現結構就可以去訪問它們,它們各自的內部存儲 結構互不相同,各種集合有各自的應用場合.說到這裡大家可能想出一大堆這樣的 集合了:List,Hashtable,ArrayList等等。這些集合各自都有各自的個性,這就 是它們存在的理由。但如果你想遍歷它你必須知道它內部的存儲細節,作為一個 集合元素,把內部細節暴露出來肯定就不好了,這樣客戶程序就不夠穩定了,在你 更換集合對象的時候,比如List不能滿足需求的時候,你換成Hashtable,因為以 前的客戶程序過多的關注了List內部實現的細節,所以不能很好的移植。而迭代 器模式就是為解決這個問題而生的:

提供一種一致的方式訪問集合對象 中的元素,而無需暴露集合對象的內部表示。

比如現在有這樣一個需求 ,遍歷集合內的元素,然後輸出,但是並不限定集合是什麼類型的集合,也就是 未來集合可能發生改變。

思考:

集合會發生改變,這是變化點, 集合改變了,遍歷方法也改變,我們要保證遍歷的方法穩定,那麼就要屏蔽掉細 節。找到了變化點那我們就將其隔離起來(一般使用interface作為隔離手段): 假設所有的集合都繼承自ICollection接口,這個接口用來隔離具體集合的,將 集合屏蔽在接口後面,作為遍歷我們肯定需要這樣一些方法:MoveNext, Current,既然ICollection負責數據存儲,職責又要單一,那麼就新建立一個接 口叫做Iterator吧,每種具體的集合都有自己相對應的Iterator實現:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved