迭代器与组合模式.ppt
《迭代器与组合模式.ppt》由会员分享,可在线阅读,更多相关《迭代器与组合模式.ppt(30页珍藏版)》请在三一办公上搜索。
1、第七章,迭代器与组合模式,2,回顾,模板方法定义了算法的步骤,把这些步骤的实现延迟到子类模板方法模式为我们提供一种代码复用的重要技巧模板方法的抽象类可以定义具体方法、抽象方法和HookHook是一种方法,它在抽象类中不做事,或者只做默认的事情,子类可以选择要不要去覆盖它。,3,目标,迭代器允许访问聚合的元素,而不需要暴露它的内部结构迭代器将遍历集合的工作封装进一个对象中当使用迭代器的时候,我们依赖聚合提供遍历迭代器提供一个通用的接口,可以遍历聚合的项,当编码使用聚合的项时,就可以使用多态机制组合模式提供一个结构,可同时包含个别对象和组合对象使用组合结构,我们能把相同操作应用在组合和个别对象上。
2、,4,举例,两家餐厅(一家做早餐的,另一家做午餐的),由于市场竞争,餐厅进行合并,我们来分析会出现什么问题?,每家餐厅都有菜单项:,每家餐厅菜单项存储方式不同,5,问题分析,合并前,两家餐厅的菜单项存储格式不一样,6,问题分析,合并后的新餐厅能够遍历菜单每一项,可以打印出所有素食菜单项,我们必须实现两个不同的循环,分别处理这两个不同的菜单,如果还有第三家餐厅合并进来,需要三个循环,7,解决问题,现在我们创建一个迭代器对象(Iterator),利用它来封装”便历集合内的每个对象的过程”。Iterator iterator=breakfastMenu.createIterator();while(
3、iterator.hasNext()MenuItem menuItem=(MenuItem)iterator.next();Iterator iterator=DinerMenu.createIterator();while(iterator.hasNext()MenuItem menuItem=(MenuItem)iterator.next();,遍历集合的每个对象过程封装起来!不用暴露出对象的存储形式看不到ArrayList、数组,8,迭代器模式,它依赖于一个迭代器接口:一旦我们有了这个接口,就 可以为各种对象集合实现迭代器,interfaceIterator,hasNext()next(
4、)remove,DinerMenuIterator,hasNext()next()remove(),9,用迭代器改写餐厅菜单-1,返回一个针对该集合的具体迭代器,10,用迭代器改写餐厅菜单-2,不创建自己的迭代器,而是调用菜单项ArrayList的iterator()方法,获得具体迭代器。,让这两家餐厅菜单类都实现Menu接口,11,代码,每个餐厅菜单类都必须负责建立适当的具体迭代器。,12,运行,13,UML类图,14,定义迭代器模式,定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。注意:迭代器模式让我们能游走于聚合内的每一个元素,而又不暴露其内部的表示;把游走的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 迭代器 组合 模式
链接地址:https://www.31ppt.com/p-6146357.html