Behavioral模式之Iterator模式

2021-07-03 10:33:32 字數 1482 閱讀 9968

提供一種方法順序訪問乙個集合物件中各個元素,而不需要暴露該物件的內部表示。

cursor(游標)

乙個聚合物件,如列表(list),應該提供一種方法來讓別人可以訪問它的元素,而又不需要暴露它的內部結構。資料庫中最常用的iterator模式。

以下情況使用iterator模式:

顧名思義,迭代器模式就是順序訪問聚集中的物件,一般來說,集合中非常常見,如果對集合模擬較熟悉的話,理解本模式會十分輕鬆。這句話包含兩層意思:一是需要遍歷的物件,即聚集物件,二是迭代器物件,用於對聚集物件進行遍歷訪問。我們看下關係圖:

這個思路和我們常用的一模一樣,mycollection中定義了集合的一些操作,myiterator中定義了一系列迭代操作,且持有collection例項,我們來看看實現**

實現**:

兩個介面:

public

inte***ce collection

public

inte***ce iterator

兩個實現:

public

class

mycollection

implements

collection ;

@override

public iterator iterator()

@override

public object get(int i)

@override

public

intsize()

}public

class

myiterator

implements

iterator

@override

public object previous()

return collection.get(pos);

}@override

public object next()

return collection.get(pos);

}@override

public

boolean

hasnext() else

}@override

public object first()

}

測試類:
public class test

}} 「`輸出:a b c d e

此處我們貌似模擬了乙個集合類的過程,感覺是不是很爽?其實jdk中各個類也都是這些基本的東西,加一些設計模式,再加一些優化放到一起的,只要我們把這些東西學會了,掌握好了,我們也可以寫出自己的集合類,甚至框架!

引用:

Behavioral模式之Visitor模式

表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。無考慮乙個編譯器,他將源程式表示為乙個抽象語法樹。該編譯器需要在抽象語法上實施某些操作以進行 靜態語義 分析,例如檢查是否所有的變數都已經被定義了。他也需要生成 因為它可能要定義許多操作以進行 ...

Behavioral模式之State模式

允許乙個物件再其內部狀態改變時,改變它的行為。物件看起來似乎修改了它的類。狀態物件 objects for states 考慮乙個表示網路連線的類tcpconnection。乙個tcpconnection物件的狀態處於若干不同狀態之一 連線已建立 established 正在監聽 listenlin...

設計模式之禪之設計模式 門面模式

1 package com.yeepay.sxf.template18 2 3 寫信的業務類 4 隱藏在門面角色裡邊,不需要暴露太多5 author sxf6 7 8public inte ce iletterprocess view code 寫信的業務類的實現 1 package com.yee...