项目总结
通过之前做项目,目前我们的系统实际上分为三个方面:数据、操作、显示。我发现工作量的80%是在于数据处理(数据库查询,数据缺失)。算法,显示所占的工作比例微乎其微。
数据类
Java方面:包括了数据库处理底层(useful包里面FinalDBFuns),数据库读写(Manager、Servlet、System),数据结构(Stru),自动事务(Transaction)。
Oracle方面(数据预处理):包括了表,视图,存储过程。
数据类不仅要实现数据读取的功能,更要处理数据空缺或是短小的问题。数据问题应该尽量在数据类(源头)里面解决,比如说之前的HashMap问题,日期对应数据不全问题。都应该在Manager里面就解决。
操作类
即算法与处理,通常算法可以写成一个类,只要有输入,初始化后计算即可。处理一般是包含静态方法的类。
算法中是否需要有数据处理的方法?不需要,算法中的数据来源:数据库Manager---Servlet---界面---算法。数据处理的原则是尽量在源头上就进行处理,算法中处理显然是太迟了。
算法是否可以写成静态?可以写成静态的,如之前的Station方法。只不过如果放回的数据类型比较复杂,只能通过HashMap来返回。
显示类
即输入与输出结果的显示,是我们写的界面类。我们在java方面90%的时间都花费在界面类的处理上,因为很多时候是数据上的问题(可怕的NullPointException,其次是Array Index out of bounds Exception)。界面布局非常简单,就是实现组件的布局。但是页面还有给各个组件赋予内容,这个就是比较棘手的问题,因为必然包括数据上的交互与处理。也就是说界面类不仅仅是显示,还有调用部分数据处理与数据读写的东西。
界面流程:界面包括打开界面,界面布局,数据初始化,界面-数据(包括缓存与现取数据),界面更新-数据更新(更新的是现取数据),数据保存,关闭页面(关闭页面一般有以种情况:设为不可见,但是打开界面一般有两种情况,就是1. New一个 2.原有的设为可见)。
若打开界面原有的设为可见,就会出现一个问题,就是图表数据都还在,所以2情况还需要更新一下界面内容,包括组件更新和图表更新,组件更新即将组件设为初始值(如Jbutton的setEnable,或者是JdateChooser设成初始日期);图表更新就是去除图表的model(调用Model中的clear方法)。
划分这三个类实际上是为了实现代码配置进行的,代码不同。需要说明的是:我写的这三个类与MVC框架不同的是我这个是按照功能划分的。