迭代器模式(行為型)
阿新 • • 發佈:2020-11-20
設計模式的3個分類:建立型模式、結構型模式、行為型模式
迭代器模式定義:
所謂迭代器模式,就是提供一種方法順序訪問一個容器物件的各個元素,而又不需要暴露該物件的內部表示的設計模式。
迭代器(Iterator)模式,又叫做遊標(Cursor)模式。
Java中的Map、List等等容器,都使用到了迭代器模式。
Android中的SQLiteDatabase的query方法查詢資料庫時,會返回一個Cursor遊標物件,也是一個迭代器。
迭代器模式圖示:
(注: 迭代器模式分離了集合物件的遍歷行為,抽象出一個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部程式碼透明地訪問集合內部的資料。)
程式碼實現:
public interface Iterator { boolean hasNext(); Object next(); } public interface Container { Iterator getIterator(); } //實現Container介面,並通過內部類實現Iterator介面 public class NameRepository implements Container { private String[] names = {"Robert", "John", "Julie", "Lora"}; @Override public Iterator getIterator() { return new NameIterator(); } private class NameIterator implements Iterator { int index; @Override public boolean hasNext() { if (index < names.length) { return true; } return false; } @Override public Object next() { if (this.hasNext()) { return names[index++]; } return null; } } } /** * 測試 */ public class IteratorPatternDemo { public static void main(String[] args) { NameRepository nameRepository = new NameRepository(); Iterator iterator = nameRepository.getIterator(); while (iterator.hasNext()) { String name = (String) iterator.next(); System.out.println("name = " + name); } } }
--End