程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 迭代器模式——Head First Design Patterns

迭代器模式——Head First Design Patterns

編輯:C++入門知識

定義:迭代器模式提供一種不暴露集合就能訪問集合內多態對象的途徑

使用場景:需要遍歷某個集合時

類圖:

\

代碼樣例:

package headfirst.iterator.dinermerger;

public class MenuItem {
	String name;
	String description;
	boolean vegetarian;
	double price;
 
	public MenuItem(String name, 
	                String description, 
	                boolean vegetarian, 
	                double price) 
	{
		this.name = name;
		this.description = description;
		this.vegetarian = vegetarian;
		this.price = price;
	}
  
	public String getName() {
		return name;
	}
  
	public String getDescription() {
		return description;
	}
  
	public double getPrice() {
		return price;
	}
  
	public boolean isVegetarian() {
		return vegetarian;
	}
	public String toString() {
		return (name + ", $" + price + "\n   " + description);
	}
}


package headfirst.iterator.dinermerger;

public interface Iterator {
	boolean hasNext();
	Object next();
}


package headfirst.iterator.dinermerger;

public class ArrayIterator implements Iterator {
	MenuItem[] items;
	int position = 0;
 
	public ArrayIterator(MenuItem[] items) {
		this.items = items;
	}
 
	public Object next() {
		MenuItem menuItem = items[position];
		position = position + 1;
		return menuItem;
	}
 
	public boolean hasNext() {
		if (position >= items.length || items[position] == null) {
			return false;
		} else {
			return true;
		}
	}
}


優點:1)提供一種訪問集合元素的統一方法,使用者不需要關注該集合的底層實現 2)將遍歷集合和管理集合分離,使集合本身僅關注於管理

缺點:

類似的設計模式:

配套的內功心法:1)一個類應該只有一個改變的理由 2)凝聚性用來度量一個類或者模塊僅關注一個功能的程度,一個類如果僅包含一組非常相近的功能,我們稱這個類具有高凝聚性。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved