迭代器與組合模式

第九個模式:迭代器與組合模式java

9.1問題引入:編程

我要須要建立一個對象,將它稱爲迭代器(Iterator),利用它來封裝「遍歷集合內的每一個對象的過程」。想讓咱們在ArrayList上試試:數組

image

將它也在數組上試試:設計

image

9.2會見迭代器模式3d

關於迭代器模式,咱們須要知道的就是它依賴於一個名爲迭代器的接口。一旦咱們有了這個接口,就能夠爲各類對象集合實現迭代器:數組、散列表、列表····若是咱們想要爲數組實現迭代器,以便使用在DinnerMenu中,看起來就像這樣:對象

image

看看初版的設計:blog

image

9.3作一些改良接口

咱們使用Java的Iterator接口,這會帶來不少的好處。get

首先看看java.util.Iterator接口:it

image

煎餅屋菜單和餐廳菜單的類,都實現了Menu接口,女招待能夠利用接口(而不是具體類)引用每個菜單對象。這樣,經過「針對接口編程,而不針對實現編程」,咱們就能夠減小女招待和具體累之間的依賴。

這個新的菜單接口有一個方法,createIterator()。此方法是由煎餅屋菜單和餐廳菜單實現的。每一個菜單類都必須提供適當的具體迭代器。

image

 

如今引入迭代器模式:提供了一種方法順序訪問了聚合對象中的各個元素,而又不暴露其內部的表示。

下面是迭代器模式的類圖:

image

9.4組合模式的引入

組合模式:容許你將對象組合成樹形結構來表示「總體/部分」層次結構。組合能讓客戶以一致的方式處理個別對象以及對象組合。

組合模式的類圖以下:

image

相關文章
相關標籤/搜索