Java設計模式之Iterator模式

2021-08-17 14:41:13 字數 2137 閱讀 4764

概述:相信每個開發人員在開發中都會面臨各種複雜的業務邏輯,在解決這些問題時,初級開發人員會注重業務邏輯逐步實現功能,相信也會實現所要求的功能,但對於後期的維護個更新來說會變得相當麻煩,當業務邏輯改變時或是調整時,開發人員甚至會重寫才能滿足要求,而對於有經驗的開發人員來說會首先考慮能否用那種設計模式來實現功能,利用設計模式提高**的邏輯和擴張性,個人工作幾年的經驗也證明學習設計模式的重要性,從這篇開始我會每篇介紹乙個設計開發模式,算是對自己知識的梳理,希望能幫助需要的人。

在開發過程中對於資料集合的遍歷很多人都會使用for迴圈,根據i的座標逐步輸出每個元素,在這裡將變數i的作用抽象話後就為今 天要講的iterator模式,即迭代器模式。

首先介紹iterator的登場角色

我們已書店和圖書為例,書架為集合,圖書為商品,可以在書架上儲存和獲取,下面來看看所需的介面和類:

下面我們建立每個類,並按照上面的要求實現其中的方法:

inte***ce iterator
包含兩個方法hasnext(),用於判斷是否有下乙個資料,next()獲取當前數值並向下移動,返回乙個any

class bookiterator(val bookstore: bookstore) : iterator

override fun next(): any

}

實現其兩個介面方法,因為要遍歷集合,所以此處要傳入乙個bookstore的物件,在hasnext中根據集合的下表判斷是否有下乙個資料,在next方法中返回資料並將index向下移動。
inte***ce aggregate
class bookstore : store 

fun addbook(book: book)

fun getbook(int: int) : book

fun getlength():int

}

此處建立乙個list儲存資料,getbook用於獲取資料,addbook用於新增資料,iterator方法建立迭代器物件

data class book(val name: string ,val money : int)
bookstore = bookstore()

bookstore.run

}val iterator = bookstore.iterator()

while (iterator.hasnext())

先向集合中新增五個資料,在用剛才的迭代器遍歷資料,輸出結果:

03-25 13:39:56.056 2962-2962/com.example.wuliangliang.designmodel e/book===: android==10

03-25 13:39:56.056 2962-2962/com.example.wuliangliang.designmodel e/book===: android==20

03-25 13:39:56.056 2962-2962/com.example.wuliangliang.designmodel e/book===: android==30

03-25 13:39:56.056 2962-2962/com.example.wuliangliang.designmodel e/book===: android==40

03-25 13:39:56.056 2962-2962/com.example.wuliangliang.designmodel e/book===: android==50

while (iterator.hasnext())
這裡只使用了iterator的方法,並沒有使用bookstroe的任何方法,實現了遍歷和集合的解耦

有人可能認為這裡的bookstore和bookiterator的具體類便可以實現更能,為什麼還要兩個集合呢?對於這樣的同學只想使用具體的類解決實際的方法,可這樣的話就將這幾個類耦合和限定在一起了,沒有實現操作邏輯和資料的解耦,進而使類更加容易被當作元件再次利用。

好了,今天的設計模式就到這裡了,希望大家今後在工作過程中能更好的使用設計模式,慢慢你就會發現設計模式真的很強大,簡單的道理可以實現很多複雜的功能。

java之設計模式

編寫 原則 開閉原則 對修改關閉 對擴充套件開發。如利於 二次開發 作用 1.重用 2.低耦合 模組與模組之間,類與類之間依賴程度要降低 3.高內聚 模組或者類內部依賴程度要高 4.易擴充 5.易維護 1.介面卡模式 橫向擴充套件,鏈條上有多個物件,每個物件持有下乙個物件的引用,這樣就會形成一條鏈,...

java設計模式之原型設計模式

原型設計模式 顧名思義,該模式的思想就是將乙個物件作為原型,對其進行複製 轉殖,產生乙個和原物件類似的新物件 設計思路 第一步 建立乙個類prototypemode,實現cloneable介面 第二步 在prototypemode中定義shallowclone方法 淺複製物件實現 和deepclon...

java設計模式之裝飾設計模式

裝飾設計模式 裝飾設計模式就是給乙個物件增加一些新的功能,而且是動態的。要求裝飾物件和被裝飾物件實現同乙個介面,裝飾物件持有被裝飾物件的例項 設計思路 第一步 定義介面action,在介面中提供乙個方法work 第二步 定義被裝飾類child,實現介面action 第三步 定義裝飾類adult,實現...