Iterator 迭代器模式.ppt
《Iterator 迭代器模式.ppt》由会员分享,可在线阅读,更多相关《Iterator 迭代器模式.ppt(34页珍藏版)》请在三一办公上搜索。
1、Iterator 迭代器,特大喜讯,Pancake House(薄烤饼屋)早餐店和Diner(用餐者)午餐店合并了,您现在可以在一个地方享受到美味的早餐和午餐。,哥们!我想用ArrayList列我的Pancake House为早餐菜单,Diner为你的午餐菜单,如何?,靠!我不干,我喜欢用Array,两份菜列表,实现很简单三个类搞定,MenuItem类Public calss MenuItemString name;String description;Boolean vegetarian;/是否素食的double price;Public MenuItem(String name,Strin
2、g description,boolean vegetarian,double price)/所有属性有get方法,PancakeHouse的菜单Public class PancakeHouseMenuArrayList menuItems=new ArrayList();Public PancakeHouse()addItem(“K,增加菜单项,菜单项增加到列表中,返回菜单列表,DinerMenu菜单Public class DinerMenu(static final int MAX_ITEMS=6;int numberOfItems=0;MenuItem menuItems=new M
3、enuItemMAX_ITEMS;Public DinerMenu()addItem(“Vegetarian BLT”,”Bacon with lettuce,如果你是服务员,你是如何展现这两份不同的菜单?并且还能说明菜单项是否是蔬食类。产生一个服务员类,其方法如下:printMenu():打印菜单上的每一列printBreakfastMenu():打印早餐列printLunchMenu():打印午餐列printVegetarianMenu():打印所有蔬食类列isItemVegetarian(name):根据名字得到其是否是蔬食类的列,可以列出菜单了一、PancakeHouseMenu pa
4、ncake=new pancakeHouseMenu();ArrayList breakfastItems=pancake.getMenuItems();DinerMenu dine=new DineerMenu();MenuItem lunchItems=dinerMenu.getMenuItems();注意:它返回的类型不同,二、For(int i=0;ibreakfastItems.size();i+)MenuItem menuItem=(MenuItem)breakfastItems.get(i);System.out.print(menuItem.getName()+“”+MenuI
5、tem.getPrice()+“”+MenuItem.getDescription();For(int i=0;ilunchItems.size();i+)MenuItem menuItem=lunchItemsi;System.out.print(menuItem.getName()+“”+MenuItem.getPrice()+“”+MenuItem.getDescription();现在我们不得不执行两次不同的循坏,如果我们创建一个对象,把每一列数据存入这个对象中,然后通过循环这个对取得每一个列,是不是可以呢?用早餐菜单做个列子,如下:Iterator iterator=breakfas
6、tMenu.createIterator();While(iterator.hasNext()MenuItem menuItem=(MenuItem)iterator.next();,形成一个接口:Iterator 有两个方法如下:hasNext():判断集合是否有下一个元素Next():返回集合里的下一个对象一但有了此接口,我们就能执行各种容器对象:arrays,lists,hashtable.爽,类关系图,具体执行循环的类,初始化数据等功能,DinerMenuIterator类Public class DinerMenuIterator implments IteratorMenuItem
7、 items;Int position=0;Public DinerMenuIterator(MenuItem items)this.items=items;Public Object next()MenuItem menuItem=itemsposition;position=position+1;return menuItem;Public boolean hasNext()if(position=items.length|itemsposition=null)return false;else return true;,DineMenu类Public class DineMenustat
8、ic final int MAX_ITEMS=6;int numberOfItems=0;MenuItem menuItems;。public MenuItem getMenuItems()return menuItems;Public Iterator createIterator()return new DineMenuIterator(menuItems);,删除不用了,返回Iterator接口,客户端不需要知道DinerMenuIterator是如何执行的,Waitress类Public class WaitressPancakeHouseMenu pancakeHouseMenu;D
9、inerMenu dinerMenu;public Waitress(PancakeHouseMenu;pancakeHouseMenu,DinerMenu dinerMenu)this.pancakeHouseMenu=pancakeHouseMenu;this.dinerMenu=dinerMenu;Public void printMenu()Iterator pancakeIterator=pancakeHouseMenu.createIterator();Iterator dinerMenuIterator=dinerMenu.createIterator();System.out.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Iterator 迭代器模式 迭代器 模式
链接地址:https://www.31ppt.com/p-2378973.html