HIT 软件构造2019春 Lab5 问题解决
Update 5/26/2019
- CheckStyle in IDEA
- OQL in MAT
- Optimization for IO
- Design Pattern
CheckStyle in IDEA
使用以下操作解决缩进与包名导入问题。
打开IDEA的自动导包功能:
修改项目中Tab和缩进设置
修改项目中注释代码的缩进设置:
修改项目设置
取消使用*自动导入包
按照包名的字典序导入包
最后右击项目src,Format Code。
OQL In MAT
MAT OQL Syntax Link:https://help.eclipse.org/oxygen/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Freference%2Foqlsyntax.html
1)TrackCircularOrbit类的实例
2)特定长度n的字符串对象‘
3)大于特定大小的任意对象实例
’
4)PhysicalObject的所有子类数目以及占用内存
5)Collections实例-所有数目大于等于100的
如图:
因为本实验中大多数使用ArrayList,所以只检查满足条件的ArrayList。
Optimization for IO
1)将所有使用List遍历方式的检查换成HashMap
2)添加控制开关INPUTCHECKON,默认为true,如果false则对于输入文件不做额外的检查。
Design Pattern
1)使用FlyWeight设计模式设计Electron工厂,基本思想就是对于每一个轨道只有一个Electron实例。因为以前的程序是依据引用(内存地址)判断相同的,在添加物体时的普遍规则是如果轨道系统中有相同的对象则报错,此处需要在子类中覆盖该方法,不进行对象相同检查。
2)对于Track类,程序中采用值相等(轨道半径相等)的方法判断对象相同,因此可以使用FlyWeight设计模式进行优化。对于一个轨道半径的轨道只建立一个实例。
3)使用ObjectPool思想修改CommonObject的初始化,在初始化中,因为不考虑绝对位置,所以每次将位置初始化为Position(0,0),在这里选择创建一项存储在ObjectPool中。
4)使用 ”” 而不是用new String方法声明字符串变量
我是迷人的小尾巴
以下外链,利益相关,欢迎浏览ε≡٩(๑>₃<)۶ :