- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
吴东洋第一次试验报告
信息工程学院
试 验 报 告
课程名称: 实验名称:
实验类型:验证性□综合性□设计性
实验室名称: 班级: 学号:
姓名: 成绩:
实验日期:
报告类型:实验报告√ 预习报告□
一、实验名称
设计模式应用
二、实验目的
1、学习使用UML和面向对象编程语言设计与实现代理模式、迭代器模式等。
2、理解每一种设计模式的设计动机,掌握模式结构。
3、学习如何使用面向对象语言实现这些模式,并分析其运行结果。
三、实验内容
使用UML和面向对象编程语言设计与实现代理模式、迭代器模式等,包括根据实例绘制模式类图、编写模式实例实现代码,运行并测试模式实例代码。
四、实验环境
实验地点:格物楼B402
软件环境:Myeclipse10
操作系统:windows7/8
五、实验要求
1.使用UML正确绘制代理模式、迭代器模式等实例的类图
2.使用面向对象语言实现代理模式、迭代器模式等实例,代码运行正确无误。
3.实验前写好预习报告,做完实验后写出实验报告
六.实验步骤
1、理解代理模式、迭代器模式含义
2、利用建模工具Rose等,使用UML绘制代理模式、迭代器模式的类图
3、使用面向对象语言实现代理模式、迭代器模式
4、运行并测试模式实例代码,观察、分析实验结果
七、实验原理
代理模式:给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象。
迭代器模式:提供一种方法顺序地访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。
八、方案设计
代理模式:
代理模式的角色分四种:
主题接口: 即代理类的所实现的行为接口。
目标对象: 也就是被代理的对象。
代理对象: 用来封装真是主题类的代理类。
客户端?
2、迭代器模式:
1.抽取对象:聚合对象,这里是公交车,是一个具体的,当然集合对象不限于公交车,所以可以抽取一个抽象类:
聚合抽象类:Aggragate
具体聚合类:Bus
聚合对象中的乘客:Passenger
迭代器对象:在这个需求中,迭代器是售票员,同样也抽取一个抽象的迭代器,因为 迭代器的迭代顺序可以不一致:
抽象迭代器:Iterator
具体的迭代器:Conductor
2.类的职责:Aggregate提供一个创建迭代器的行为,在Bus中有Passenger,所以 要提供当前乘客的数量的行为,还有上下车的行为,即加或减乘客
Aggregate:iterator();
Bus:removePassenger();addPassenger();count();getPassenger(int index);
Iterator:既然是迭代器,就会提供如下行为: first();next();hasNext();current();
类的交互:在具体的聚合类Bus中显然装的是乘客,然而迭代器要迭代聚合对象的 元素,即必须依赖了聚合对象。
九、程序类图与试验代码
代理模式:
package com;
//定义一个主题接口
public interface Subject {
public void Hello();
public void GoodBye();
}
package com;
//定义一个目标类, 并实现主题接口
public class RealSubject implements Subject {
public void Hello() {
System.out.println(你好);
}
public void GoodBye() {
System.out.println(再见);
}
}
package com;
//定义一个代理类, 来代理目标对象
public class StaticProxy implements Subject {
private RealSubject realSubject = null;
public StaticProxy() {}
public void Hello() {
if(realSubject == null) {
realSubject = new RealSubject();
}
realSubject.Hello();
}
public void GoodBye() {
if(realSubject == null) {
realSubject = new RealSubject();
原创力文档


文档评论(0)