你有沒有遇過這樣的情況:需要一個接一個地處理某個集合裡的東西,但又不想去理解它內部是如何儲存的?就像你讀書時,只要翻頁閱讀,不用去管書的裝訂方式。這就是迭代器模式要解決的問題。
什麼是迭代器模式?
迭代器模式就是提供了一個統一的方式來遍歷集合中的元素,而不必暴露集合的內部結構。這很像你在看一個資料夾裡的檔案時,無論它們是按日期、類型還是名稱排列,你只需一個「下一個」按鈕,依序查看即可,不用擔心每次都得自己去理解檔案是如何排序的。
應用情境:音樂播放清單
想像你有一個音樂播放清單,裡面可能有幾百首歌,這些歌可能是以 array、linked list或其他方式儲存,但作為使用者,你只要能依次播放下一首歌,不想了解內部是如何管理的。這就是迭代器模式的典型應用。
播放清單的迭代器可以用一種統一的方式,讓你一首一首地播放歌曲。無論清單用什麼資料結構來存歌,你只需要操作這個迭代器,點擊「下一首」就能播放下一首歌,而不需要去知道內部是陣列還是其他複雜的東西。
迭代器模式優點與缺點
迭代器模式的好處就是它可以把遍歷的細節封裝起來,讓你只專注於如何使用集合,而不是怎麼實現遍歷。無論集合的內部結構是什麼樣的,你都可以用同一種方法去操作,這樣程式碼就更加靈活易用。
缺點是每種不同的集合結構都需要一個對應的迭代器,這可能會增加程式碼的複雜度。如果集合很大,遍歷的效能也可能會受到影響。
總結一下,迭代器模式特別適合在你需要遍歷集合,卻不希望深入了解其內部實現時使用。這讓操作變得更簡單,就像我們讀書時只關注於內容,不必費心去了解它的製作過程。
我在iThome鐵人賽中發表的文章包含了實際範例,想親身感受設計模式可以參考看看。
https://ithelp.ithome.com.tw/articles/10348531