实验5_软工1302_2013011342_阮翀答题.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验五 迭代器模式、中介者模式的应用 一、实验目的 通过该实验,理解迭代器模式、中介者模式的意图、结构,在软件开发中使用这些模式并进行功能验证。 二、实验内容 某商品管理系统的商品名称存储在一个字符串数组中,现需要自定义一个双向迭代器实现对该商品名称数组的双向(前向和后向)遍历,绘制类图并编程实现。可以参考图1类图,也可以自行设计。 图1 商品名称遍历的类图 使用中介者模式来说明联合国的作用。注:可以将联合国定义为抽象中介者类,联合国下属机构如WTO、WHO等作为具体中介者类,国家作为抽象同事类,将中国、美国等国家作为具体同事类。可以参考图2或自行设计。 图2 联合国模拟类图 三、实验步骤与要求 对于以上题目要认真分析和理解题意,程序中要求使用相应的模式。 上机录入,使用JDK编译器调试、运行、验证程序。 请指导教师审查程序和运行结果并评定成绩; 撰写并上交实验报告。 四、实验原理: 1、迭代器模式 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式模式的关键是将遍历集合的任务交给一个称作迭代器的对象。适合使用迭代器模式的情景有: 让用户访问一个集合中的对象,但不想暴露对象在集合中的存储结构。 希望对遍历不同的集合提供一个统一的接口。 迭代器模式的UML类图: 图3 迭代器模式的类图 2、中介者模式 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式的关键是将对象之间的交互封装在称作中介者的对象中,中介者使各对象不需要显示地相互引用,这些对象只包含中介者的引用。适合使用中介者模式的情景有: 许多对象以复杂的方式交互,所导致的依赖关系使系统难以理解和维护 一个对象引用其他很多对象,导致难以复用该对象 中介者模式的UML类图: 图4 中介者模式的类图 五、 上机报告内容 班级、学号、姓名、实验完成日期; 实验题目; 设计方案:给出你的设计方案,包括结构类图及相关说明; 源代码:设计方案中各个类和接口的源代码,包括测试主类的源代码. 测试数据及运行结果 总结: 运用设计模式总结:对所运用的设计模式的名称,分类,意图,结构,角色作用的总结,所运用的面向对象设计原则。 本次实验遇到的问题、如何解决的;本次实验的经验、体会、改进设想等。 六、实验成绩考核方法 实验成绩由出勤、实验完成情况以及实验报告综合评定。考核成绩比例分配:出勤占15%、实验完成情况占50%、实验报告占35% 七、上机安排 本实验共需2个学时。 总结 一、迭代器模式 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。 ? ? ? 当你需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,就应该考虑使用迭代器模式。另外,当需要对聚集有多种方式遍历时,可以考虑去使用迭代器模式。迭代器模式为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪一项等统一的接口。 迭代器模式(Iterator)就是分离了聚合对象的遍历行为,抽象出一个迭代器来负责这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部数据。 二、中介模式 在面向对象编程中,一个类必然会与其他的类发生依赖关系,完全独立的类是没有意义的。一个类同时依赖多个类的情况也相当普遍,既然存在这样的情况,说明,一对多的依赖关系有它的合理性,适当的使用中介者模式可以使原本凌乱的对象关系清晰,但是如果滥用,则可能会带来反的效果。一般来说,只有对于那种同事类之间是网状结构的关系,才会考虑使用中介者模式。可以将网状结构变为星状结构,使同事类之间的关系变的清晰一些。 ?????? 中介者模式是一种比较常用的模式,也是一种比较容易被滥用的模式。对于大多数的情况,同事类之间的关系不会复杂到混乱不堪的网状结构,因此,大多数情况下,将对象间的依赖关系封装的同事类内部就可以的,没有必要非引入中介者模式。滥用中介者模式,只会让事情变的更复杂。 ?抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。 中介者实现类:从抽象中介者继承而来,实现抽象中介者中定义的事件方法。从一个同事类接收消息,然后通过消息影响其他同时类。 同事类:如果一个对象会影响其他的对象,同时也会被其他对象影响,那么这两个对象称为同事类。在类图中,同事类只有一个,这其实是现实的省略,在实际应用中,同事类一般由多个组成,他们之间相互影响,相互依赖。同事类越多,关系越复杂。并且,同事类也可以表现为继承了同一个抽象类的一组实现组成。在中介者模式中,同事类之间必须通过中介者才能进行消息

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档