迭代器模式,主要用於容器裡面元素的遍歷,其他地方用到的不多,這裡舉個例項,模仿jdk裡面迭代器的實現,當然我這裡並沒有把iterator方法抽象到iterable這個介面中,依據介面的設計原則,不要做乙個面面俱到的介面,而應該讓特定的介面完成特定的功能
以下是**示例,使用了之後,我們在測試**中,僅僅只需要改動乙個位置就可以實現不同list的切換
package com.zcj.designpattern;
import com.zcj.designpattern.*;
public class iteratortest
}}
接下來是我定義的list介面:
package com.zcj.designpattern;
//定義list的介面,採用泛型
public inte***ce list
接著是iterator介面的定義:
package com.zcj.designpattern;
public inte***ce iterator
下面是二個list的實現:因為用到了鍊錶,所以定義了乙個node類
package com.zcj.designpattern;
public class arraylistimplements list
private class arraylistitrator implements iterator
public t getval()
public void setval(t val)
public node getnext()
public void setnext(node next)
}
package com.zcj.designpattern;
public class linkedlistimplements list
else
size++;
} @override
public iteratoriterator()
@override
public int size()
private class linkedlistiterator implements iterator
@override
public t next()
@override
public void remove()
}}
以上所有**模擬了乙個簡單的迭代器模式的功能
設計模式 迭代模式Iterator
提供乙個方法按順序遍歷乙個集合內的元素,而又不需要暴露該物件的內部表示。1 訪問乙個聚合的物件,而不需要暴露物件的內部表示 2 支援對聚合物件的多種遍歷 3 對遍歷不同的物件,提供統一的介面。iterator 定義訪問的介面 抽象的迭代,有判斷結束和下乙個,獲取當前元素等函式 author xing...
設計模式 Iterator理解
為了更好的理解iterator,也就是迭代器,借用arraylist和linkedlist,來更好解釋了iterator的作用 package designmode.iterator description 定義集合方法介面 author ccq date 2017年6月20日 下午9 52 30 ...
設計模式之迭代模式(Iterator)
意圖 提供一種順序訪問乙個聚合物件中各個元素,而不需要暴露聚合物件內部行為。即將列表的訪問和遍歷從列表物件中分離出來,放入迭代器物件中。使遍歷和列表物件介面。可產生乙個列表物件可以復用多個迭代器 多種遍歷方式 乙個迭代器支援多個列表物件 多個列表物件由相同遍歷演算法,或者列表物件本身提供演算法差異部...