欢迎来到天天文库
浏览记录
ID:52229451
大小:6.32 MB
页数:106页
时间:2020-04-03
《ch9 迭代器模式和组合模式.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、软件设计方法及设计模式张聚礼副教授/系统分析师迭代器模式和组合模式912一二三四五六比较菜单的实现迭代器模式迭代器和集合定义组合模式组合菜单组合迭代器主要内容3一、比较菜单的实现对象村餐厅和对象村煎饼屋合并了比较菜单的实现(一)(二)有什么问题吗(三)4(一)对象村餐厅和对象村煎饼屋合并了5(二)比较菜单的实现菜单项6(二)比较菜单的实现7(二)比较菜单的实现Lou的菜单8(二)比较菜单的实现9(二)比较菜单的实现Mel的菜单10(二)比较菜单的实现11(三)有什么问题吗如何使用菜单呢?12(三)有什么问题吗打印每份菜单上的所有项13(三)有什么问题吗用循环将数组内的项一一列出来14(三)
2、有什么问题吗采用类似的手段实现其他方法15(三)有什么问题吗16二、迭代器模式可以封装遍历吗?认识迭代器模式(一)(二)在餐厅菜单中加入一个迭代器(三)定义迭代器模式单一责任(四)(五)17(一)可以封装遍历吗?应该封装变化的部分,这里可以封装吗?需要使用ArrayList的size()和get()方法18(一)可以封装遍历吗?需要用到数组的length和[]19(一)可以封装遍历吗?现在,创建一个迭代器对象20(一)可以封装遍历吗?用在数组上,如何呢?21(二)认识迭代器模式迭代器接口22(二)认识迭代器模式有了接口,就可以为各种集合实现迭代器23(三)在餐厅菜单中加入一个迭代器先定义迭
3、代器接口24(三)在餐厅菜单中加入一个迭代器实现具体的迭代器25(三)在餐厅菜单中加入一个迭代器改写菜单26(三)在餐厅菜单中加入一个迭代器将迭代器代码整合进女招待类中27(三)在餐厅菜单中加入一个迭代器测试28(三)在餐厅菜单中加入一个迭代器RUN29(三)在餐厅菜单中加入一个迭代器现在的设计30(三)在餐厅菜单中加入一个迭代器31(三)在餐厅菜单中加入一个迭代器进行一些改进看看java.util.Iterator32(三)在餐厅菜单中加入一个迭代器使用java.util.Iterator33(三)在餐厅菜单中加入一个迭代器处理DinerMenuIterator34(三)在餐厅菜单中加入
4、一个迭代器将迭代器放入Menu接口35(三)在餐厅菜单中加入一个迭代器处理Waitress36(三)在餐厅菜单中加入一个迭代器现在的设计,怎么样呢?37(四)定义迭代器模式迭代器模式:提供一种顺序访问集合对象中各个元素的方法,而又不暴露其内部的表示(也就是数据结构)。38(四)定义迭代器模式类图39(五)单一责任设计原则九:一个类应该只有一个引起变化的原因。40(五)单一责任类的每个责任都有一个潜在的改变区域,多一个责任就意味着多一个改变的区域。要尽量让每个类保持单一责任。既要让每个类都保持单一的责任,也要保证一个责任只指派给一个类。内聚(Cohesion)用来度量一个类或模块紧密地达到单
5、一目的或责任的程度。41(五)单一责任现在呢?42(五)单一责任这里是咖啡厅的菜单43(五)单一责任44(五)单一责任将咖啡厅的菜单整合到我们的框架中45(五)单一责任让女招待认识菜单46(五)单一责任测试47(五)单一责任RUN48(五)单一责任我们做了什么?49(五)单一责任女招待不在需要指定具体实现50(五)单一责任更易于扩展51(五)单一责任还有更多的集合类52三、迭代器和集合迭代器和集合(一)Java5的迭代器和集合(二)这安全吗?(三)53(一)迭代器和集合java.util.Collection接口54(一)迭代器和集合55(二)Java5的迭代器和集合Java5增加了对遍历
6、的支持56(二)Java5的迭代器和集合例如57(二)Java5的迭代器和集合现在的printMenu()58(二)Java5的迭代器和集合59(二)Java5的迭代器和集合现在的Waitress60(三)这安全吗?现在,出现了“子菜单”61(三)这安全吗?菜单样式如下:62(三)这安全吗?该怎么做呢?63(三)这安全吗?树形结构能很好地表现现在的情况64(三)这安全吗?仍然能够遍历,且更具柔性65四、定义组合模式定义类图(一)(二)66(一)定义组合模式:将对象组合成树状结构来表现“整体/部分”的层级结构,让客户以一致的方式来处理个别对象以及对象组合。67(一)定义树形结构在树状结构中,
7、带有子元素的元素成为节点(Node);没有子元素的元素成为叶节点(Leaf)。68(一)定义表达菜单和菜单项69(一)定义可以创建任意复杂的树70(一)定义可以将它视为一个整体71(一)定义操作可以针对整体或部分72(二)类图73五、组合菜单利用组合设计菜单实现组合菜单(一)(二)74(一)利用组合设计菜单75(二)实现组合菜单实现MenuComponent76(二)实现组合菜单实现MenuItem77(二)实现组合菜单
此文档下载收益归作者所有