GoLang設計模式09 迭代器模式

2022-09-19 17:27:15 字數 3831 閱讀 3592

迭代器模式是一種行為型模式。在這種模式中,集合結構會提供乙個迭代器。通過這個迭代器可以順序遍歷集合中的每個元素而不需要暴露其具體的實現。

下面是迭代器模式的一些具體實現:

在golang當前的版本(1.16或更早)中是沒有泛型的,所以一些特殊情況下還是需要會用到迭代器模式。

來看下類圖:

下面是示例**:

iterator.go:12

34typeiteratorinte***ce

collection.go:12

3typecollectioninte***ce

user.go:12

34typeuserstruct

useriterator.go:12

3456

78910

1112

1314

1516

1718

1920

typeuseriteratorstruct

func(u *useriterator) hasnext() bool

returnfalse

}

func(u *useriterator) getnext() *user

returnnil

}

usercollection.go:12

3456

789typeusercollectionstruct

func(u *usercollection) createiterator() iterator

}

main.go:12

3456

78910

1112

1314

1516

1718

funcmain()

user2 := &user

usercollection := &usercollection,

}

iterator := usercollection.createiterator()

foriterator.hasnext()

}

輸出內容:12

user is &

user is &

**已上傳至github: github / zhyea / iterator-design-pattern

end!

僅是學習筆記,難免出錯,望不吝指點

轉 迭代器模式是一種行為型模式。在這種模式中,集合結構會提供乙個迭代器。通過這個迭代器可以順序遍歷集合中的每個元素而不需要暴露其具體的實現。

下面是迭代器模式的一些具體實現:

在golang當前的版本(1.16或更早)中是沒有泛型的,所以一些特殊情況下還是需要會用到迭代器模式。

來看下類圖:

下面是示例**:

iterator.go:12

34typeiteratorinte***ce

collection.go:12

3typecollectioninte***ce

user.go:12

34typeuserstruct

useriterator.go:12

3456

78910

1112

1314

1516

1718

1920

typeuseriteratorstruct

func(u *useriterator) hasnext() bool

returnfalse

}

func(u *useriterator) getnext() *user

returnnil

}

usercollection.go:12

3456

789typeusercollectionstruct

func(u *usercollection) createiterator() iterator

}

main.go:12

3456

78910

1112

1314

1516

1718

funcmain()

user2 := &user

usercollection := &usercollection,

}

iterator := usercollection.createiterator()

foriterator.hasnext()

}

輸出內容:12

user is &

user is &

**已上傳至github: github / zhyea / iterator-design-pattern

end!

C語言和設計模式(迭代器模式)09

使用過c 的朋友大概對迭代器模式都不會太陌生。這主要是因為我們在編寫 的時候離不開迭代器,佇列有迭代器,向量也有迭代器。那麼,為什麼要迭代器呢?這主要是為了提煉一種通用的資料訪問方法。比如說,現在有乙個資料的容器,cpp view plain copy typedef struct containe...

設計模式 迭代器模式

迭代器模式是屬於物件行為性的模式。首先是定義 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露物件的表示方法。迭代器的結構圖 適用性 1 訪問乙個聚合物件的內容而無需暴露它的內部表示 2 支援聚合物件的多種遍歷 3 為遍歷不同的聚合結構提供乙個統一的介面 支援多型迭代 協作 concretei...

設計模式 迭代器模式

iterator,提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。迭代器模式就是分離了集合物件的遍歷行為,抽象出乙個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部 透明地訪問集合內部的資料。iterator迭代器抽象類 迭代器抽象類 abstract clas...