版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件设计方法及设计模式,迭代器模式和组合模式,9,1,学习交流PPT,2,学习交流PPT,一,二,三,四,五,六,比较菜单的实现,迭代器模式,迭代器和集合,定义组合模式,组合菜单,组合迭代器,主要内容,3,学习交流PPT,一、比较菜单的实现,对象村餐厅和对象村煎饼屋合并了,比较菜单的实现,(一),(二),有什么问题吗,(三),4,学习交流PPT,(一) 对象村餐厅和对象村煎饼屋合并了,5,学习交流PPT,(二) 比较菜单的实现,菜单项,6,学习交流PPT,(二) 比较菜单的实现,7,学习交流PPT,(二) 比较菜单的实现,Lou的菜单,8,学习交流PPT,(二) 比较菜单的实现,9,学习交流P
2、PT,(二) 比较菜单的实现,Mel的菜单,10,学习交流PPT,(二) 比较菜单的实现,11,学习交流PPT,(三) 有什么问题吗,如何使用菜单呢?,12,学习交流PPT,(三) 有什么问题吗,打印每份菜单上的所有项,13,学习交流PPT,(三) 有什么问题吗,用循环将数组内的项一一列出来,14,学习交流PPT,(三) 有什么问题吗,采用类似的手段实现其他方法,15,学习交流PPT,(三) 有什么问题吗,16,学习交流PPT,二、迭代器模式,可以封装遍历吗?,认识迭代器模式,(一),(二),在餐厅菜单中加入一个迭代器,(三),定义迭代器模式,单一责任,(四),(五),17,学习交流PPT,(
3、一) 可以封装遍历吗?,应该封装变化的部分,这里可以封装吗? 需要使用ArrayList的size()和get()方法,18,学习交流PPT,(一) 可以封装遍历吗?,需要用到数组的length和 ,19,学习交流PPT,(一) 可以封装遍历吗?,现在,创建一个迭代器对象,20,学习交流PPT,(一) 可以封装遍历吗?,用在数组上,如何呢?,21,学习交流PPT,(二) 认识迭代器模式,迭代器接口,22,学习交流PPT,(二) 认识迭代器模式,有了接口,就可以为各种集合实现迭代器,23,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,先定义迭代器接口,24,学习交流PPT,(三) 在餐厅菜
4、单中加入一个迭代器,实现具体的迭代器,25,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,改写菜单,26,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,将迭代器代码整合进女招待类中,27,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,测试,28,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,RUN,29,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,现在的设计,30,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,31,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,进行一些改进 看看java.util.Iterator,32,学习交流PPT,(三) 在餐
5、厅菜单中加入一个迭代器,使用java.util.Iterator,33,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,处理DinerMenuIterator,34,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,将迭代器放入Menu接口,35,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,处理Waitress,36,学习交流PPT,(三) 在餐厅菜单中加入一个迭代器,现在的设计,怎么样呢?,37,学习交流PPT,(四) 定义迭代器模式,迭代器模式:提供一种顺序访问集合对象中各个元素的方法,而又不暴露其内部的表示(也就是数据结构)。,38,学习交流PPT,(四) 定义迭代器模式,
6、类图,39,学习交流PPT,(五) 单一责任,设计原则九: 一个类应该只有一个引起变化的原因。,40,学习交流PPT,(五) 单一责任,类的每个责任都有一个潜在的改变区域,多一个责任就意味着多一个改变的区域。要尽量让每个类保持单一责任。 既要让每个类都保持单一的责任,也要保证一个责任只指派给一个类。 内聚(Cohesion)用来度量一个类或模块紧密地达到单一目的或责任的程度。,41,学习交流PPT,(五) 单一责任,现在呢?,42,学习交流PPT,(五) 单一责任,这里是咖啡厅的菜单,43,学习交流PPT,(五) 单一责任,44,学习交流PPT,(五) 单一责任,将咖啡厅的菜单整合到我们的框架
7、中,45,学习交流PPT,(五) 单一责任,让女招待认识菜单,46,学习交流PPT,(五) 单一责任,测试,47,学习交流PPT,(五) 单一责任,RUN,48,学习交流PPT,(五) 单一责任,我们做了什么?,49,学习交流PPT,(五) 单一责任,女招待不在需要指定具体实现,50,学习交流PPT,(五) 单一责任,更易于扩展,51,学习交流PPT,(五) 单一责任,还有更多的集合类,52,学习交流PPT,三、迭代器和集合,迭代器和集合,(一),Java 5 的迭代器和集合,(二),这安全吗?,(三),53,学习交流PPT,(一) 迭代器和集合,java.util.Collection接口,
8、54,学习交流PPT,(一) 迭代器和集合,55,学习交流PPT,(二) Java 5 的迭代器和集合,Java 5增加了对遍历的支持,56,学习交流PPT,(二) Java 5 的迭代器和集合,例如,57,学习交流PPT,(二) Java 5 的迭代器和集合,现在的printMenu(),58,学习交流PPT,(二) Java 5 的迭代器和集合,59,学习交流PPT,(二) Java 5 的迭代器和集合,现在的Waitress,60,学习交流PPT,(三) 这安全吗?,现在,出现了“子菜单”,61,学习交流PPT,(三) 这安全吗?,菜单样式如下:,62,学习交流PPT,(三) 这安全吗?
9、,该怎么做呢?,63,学习交流PPT,(三) 这安全吗?,树形结构能很好地表现现在的情况,64,学习交流PPT,(三) 这安全吗?,仍然能够遍历,且更具柔性,65,学习交流PPT,四、定义组合模式,定义,类图,(一),(二),66,学习交流PPT,(一) 定义,组合模式:将对象组合成树状结构来表现“整体/部分”的层级结构,让客户以一致的方式来处理个别对象以及对象组合。,67,学习交流PPT,(一) 定义,树形结构 在树状结构中,带有子元素的元素成为节点(Node);没有子元素的元素成为叶节点(Leaf)。,68,学习交流PPT,(一) 定义,表达菜单和菜单项,69,学习交流PPT,(一) 定义
10、,可以创建任意复杂的树,70,学习交流PPT,(一) 定义,可以将它视为一个整体,71,学习交流PPT,(一) 定义,操作可以针对整体或部分,72,学习交流PPT,(二) 类图,73,学习交流PPT,五、组合菜单,利用组合设计菜单,实现组合菜单,(一),(二),74,学习交流PPT,(一) 利用组合设计菜单,75,学习交流PPT,(二) 实现组合菜单,实现MenuComponent,76,学习交流PPT,(二) 实现组合菜单,实现MenuItem,77,学习交流PPT,(二) 实现组合菜单,78,学习交流PPT,(二) 实现组合菜单,实现Menu,79,学习交流PPT,(二) 实现组合菜单,实
11、现Menu(续),80,学习交流PPT,(二) 实现组合菜单,修正print()方法,81,学习交流PPT,(二) 实现组合菜单,82,学习交流PPT,(二) 实现组合菜单,准备测试,83,学习交流PPT,(二) 实现组合菜单,菜单组合,84,学习交流PPT,(二) 实现组合菜单,85,学习交流PPT,(二) 实现组合菜单,RUN,86,学习交流PPT,六、组合迭代器,组合迭代器,空迭代器,(一),(二),测试,(三),87,学习交流PPT,(一) 组合迭代器,要实现组合迭代器,从这里入手,88,学习交流PPT,(一) 组合迭代器,89,学习交流PPT,(一) 组合迭代器,组合迭代器遍历组件内
12、的所有菜单,90,学习交流PPT,(一) 组合迭代器,91,学习交流PPT,(二) 空迭代器,如何实现菜单项的createIterator()方法呢? 第二个选择更好,称为空迭代器,92,学习交流PPT,(二) 空迭代器,实现空迭代器,93,学习交流PPT,(三) 测试,实现素食菜单,94,学习交流PPT,(三) 测试,95,学习交流PPT,七、总结,96,学习交流PPT,Abstraction Encapsulation Polymorphism Inheritance,Encapsulate what varies. Favor composition over inheritence.
13、Program to interfaces, not implementations.,Strategy - defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.,总结,OO Basics,OO Principles,OO Patterns,1,97,学习交流PPT,Observer - defines a one-to-many
14、dependency between objects so that when one object changes state, all its dependents are notified and updated automatically,总结,OO Patterns,Strive for loosely coupled designs between objects that interact.,OO Principles,2,98,学习交流PPT,Decorator - Attach additional responsibilities to an object dynamica
15、lly. Decorators provide a flexible alternative to subclassing for extending functionality.,总结,OO Patterns,Classes should be open for extension but closed for modification.,OO Principles,3,99,学习交流PPT,Abstract Factory - Provide an interface for creating families of related or depedent objects without
16、specifying their concrete classes. Factory Method - Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to the subclasses.,总结,OO Patterns,Depend on abstractions. Do not depend on concrete classes.,OO Princi
17、ples,4,100,学习交流PPT,Singleton - ensures a class has only one instance, and provides a global point of access to it.,总结,OO Patterns,5,101,学习交流PPT,Command - Encapsulates a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable
18、 operations.,总结,OO Patterns,6,102,学习交流PPT,Adapter - converts the interface of a class into another interface the clients expect. Adapter lets classes work together that couldnt otherwise because of incompatible interfaces. Facade - Provides a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.,总结,OO Patterns,Only talk to your friends,OO Principles,7,103,学习交流PPT,Template Method - Define the skeleton of an algorithm in an operation, def
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工测量仪器使用培训方案
- 2026年广告策划实习合同协议
- 2026湖北中联太工程造价咨询有限公司招聘备考题库【夺分金卷】附答案详解
- 2026平安财险甘孜县支公司农险客户经理招聘备考题库(四川)附答案详解(综合卷)
- 2026广西桂林信息工程职业学院人才招聘备考题库含答案详解(预热题)
- 2026浙江温州市洞头人才发展有限公司招聘启事补充2人备考题库(营业员)及答案详解【有一套】
- 中华财险广州中心支公司2026届春季招聘备考题库含答案详解(培优a卷)
- 2026浙江事业单位统考温州市鹿城区招聘(选调)21人备考题库附答案详解【完整版】
- 2026云南昭通鲁甸县卯家湾第二幼儿园招聘6人备考题库附完整答案详解【名师系列】
- 钢结构焊接缺陷检测方案
- 中小学教师绩效工资分配激励研究-基于 2024 年中小学教师绩效工资实施办法
- 2026春统编版一年级下册语文第二单元测试卷及答案
- 推拿店岗位责任制度模板
- 智能驾驶专题之四:2026智驾展望:向上升阶与向下平权的双轨渗透
- 2026年淮南职业技术学院单招职业适应性测试题库带答案详解
- 2026年汕头市普通高考第一次模拟考试 英语+答案
- 初中语文中考主旨探究与表达题知识清单
- 2026年宝山区国有(集体)企业招聘笔试参考题库附带答案详解
- 2026复工复产安全培训第9版
- 储能工程项目验收标准
- 2026年微机电系统(MEMS)设计原理
评论
0/150
提交评论