设计模式(10)——迭代器模式

迭代器模式提供了一种顺序访问聚合对象元素的方法,而不暴露其内部表示。通过迭代器,聚合类专注于管理对象集合,遍历任务交由迭代器处理。本文通过模拟餐厅点餐场景,展示了如何使用迭代器模式实现多聚合类统一接口,遵循单一责任原则,实现菜单的遍历和定制。
摘要由CSDN通过智能技术生成

迭代器(iterator)模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。

如果你有一个统一的方法访问聚合中的每一个对象,你就可以编写多态的代码和这些聚合搭配,使用。迭代器模式把在元素之间游走的责任交给迭代器,而不是聚合对象。这不仅让聚合的接口和实现变得更简洁,也可以让聚合更专注在它所应该专注的事情上面(也就是管理对象集合),而不必去理会遍历的事情。

下面用一个具体实例来加以说明。

我们模拟了一个西餐厅、一个煎饼屋和一个咖啡厅,现在我们想要让顾客在同一个地方能够同时点这三种餐馆的菜色。

在原来的菜单实现中,西餐厅的菜单用数组来记录菜单项,煎饼屋的菜单用ArrayList来记录菜单项,而咖啡厅的菜单用Hashtable来记录菜单项。

我们抽取出的菜单接口为

import java.util.Iterator;

public interface Menu {
	public Iterator createIterator();
}

菜单项的类为

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.vege
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值