迭代器模式——Head First Design Patterns

定义:迭代器模式提供一种不暴露集合就能访问集合内多态对象的途径

 

使用场景:需要遍历某个集合时

 

类图:

 

代码样例:

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)凝聚性用来度量一个类或者模块仅关注一个功能的程度,一个类如果仅包含一组非常相近的功能,我们称这个类具有高凝聚性。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值