1. 程式人生 > >Object-C程式設計之道 iOS設計模式解析--迭代器模式

Object-C程式設計之道 iOS設計模式解析--迭代器模式

何為迭代器模式

迭代器提供了一種順序訪問聚合物件(集合)中元素的方法,而無需暴露結構的底層表示和細節。遍歷集合中元素的職能從集合本身轉移到迭代器物件。迭代器定義了一個用於訪問集合元素並記錄當前元素的介面。不同迭代器可以執行不同的遍歷策略。

迭代器提供了一種方法孫旭訪問一個聚合物件中各個元素,而又不需要暴露物件內部的表示。

迭代器基本上有2中:外部迭代器與內部迭代器

外部迭代器讓客戶端直接操作迭代過程,所以客戶端需要知道外部迭代器才能使用。另一種情況,集合物件(被迭代的目標物件)在其內部維護並操作一個外部迭代器。提供內部迭代器的典型的集合物件為客戶端定義了一個介面,或者從底層的集合一次訪問一個元素,或者向每一個元素髮送訊息。

外部迭代器與內部迭代器的區別總結

外部迭代器:客戶端需要知道外部迭代器才能使用,但他為客戶端提供了更多的控制;客戶端建立並且維護;客戶端可以使用不同外部迭代器實現多種型別的遍歷

內部迭代器:客戶端不需要知道任何外部迭代器,而是可以通過集合物件的特殊介面,或者一次訪問一個元素,或者向集合中的每個元素髮送訊息;集合物件本身建立並維護它的外部迭代器;集合物件可以在不修改客戶端程式碼的情況下,選擇不同的外部迭代器

合適使用迭代器模式

1.需要訪問組合物件的內容,而又不暴露其內部表示

2.需要通過多宗方式遍歷組合物件

3.需要提供一個統一的介面,用來遍歷各種型別的組合物件

迭代器模式與訪問者模式有些類似,尤其是把遍歷演算法放到

訪問者模式中或者在遍歷聚合體時讓內部迭代器對元素執行操作的時候。