体系结构实验一Word文件下载.docx
《体系结构实验一Word文件下载.docx》由会员分享,可在线阅读,更多相关《体系结构实验一Word文件下载.docx(3页珍藏版)》请在冰豆网上搜索。
一.实验设备型号
PC机一台
Window7系统
二.实验环境
starUML
MyEclipse
三.实验步骤、程序调试方法
实验步骤:
1.理解代理模式(Proxy)和迭代器模式(Iterator)的原理。
代理
模式是为其他对象提供一种代理以控制对这个对象的访问。
迭代器模式是提供一种方法顺序访问一个聚合对象中各元素,而不需要暴露该对象的内部表示。
2.用starUML画出这两种模式的类图。
3.在理解类图的基础上编写java代码。
3.1对于使用代理模式,需要编写的类(接口)包括Subject接口,里面有一个operation方法;
类RealSubject和类Proxy需要实现Subject这个接口,在RealSubject类中的Operation方法中打印“thisisRealSubject”,在Proxy类中的Operation方法中打印“thisisProxy”;
同时还要编写一个测试类Test。
3.2对于使用迭代器模式,根据类图编写的类(接口)有Aggregate接口,Iterator接口,ConceteAggregate类和ConcreteIterator类。
ConcreteAggregate和ConcreteIterator分别实现Aggregate和Iterator接口。
Aggregate接口中定义了两个方法:
add和iterator;
Iterator接口中同样也定义了两个方法:
next()和hasNaxt();
程序调试方法:
1.对于代理模式,在测试类Test中先实例化RealSubject对象和Proxy对象,然后在调用proxy中的operation方法。
即:
Subjectsubject=newRealSubject();
Proxyproxy=newProxy(subject);
Subject.operation();
2.对于迭代器模式,在测试类Test中首先实例化ConcreteAggregate这个对象,向该对象中添加数据。
在调用iterator这个方法来实现遍历。
Aggregateag=newConcreteAggregate();
ag.add(“张三”);
g.add(“李四”);
Iteratorit=ag.iterator();
四.实验数据处理及结果分析
1.对于代理模式的运行结果是:
thisisRealSubject
thisisProxy
产生这样的运行结果是因为在测试类中运行了proxy.operation()这句代码,而在Proxy类中的operation方法中是这样写的:
publicvoidoperation(){
subject.operation();
System.out.println(“thisisProxy”);
}
所以在执行时会先执行subject.operation(),所以会产生这样的结果。
2.对于迭代器模式的运行结果是:
张三
李四
产生这样的运行结果是因为在该模式中用的List来添加数据,List是有序可重复的,而且只添加了两条数据,所以用迭代器来遍历只会显示两条数据,而且是有序的。
五.实验中存在的问题
对于代理模式,实验中考虑的不全面,在测试类中就直接调Proxy
类,没有按照老师多讲的要在RealSubject类中判断一下,如果符合条件就使用代理模式,如果不符合条件就输出错误信息。
在做迭代器模式时,最开始没有真正的理解迭代器模式的含义,导致程序一直不正确,后来在同学的帮助下,完成了程序,而且也理解了迭代器的真正的含义。
六.体会及思考
通过这次实验,深刻理解了代理模式和迭代器模式,同时也学会了如何用面向对象语言来实现这两种模式,这次的实验为我以后的工作打下了坚定的基础。