(4)笔记分级。通过将笔记设置不同的等级标记,这样在以后可以有选择有重点的查阅以前的笔记。
(5)笔记添加图片、表格。通过实现添加图片、表格功能,能够更好的满足记录笔记的需要。
(6)笔记复杂编辑。通过实现带有格式文本和图片的复制和粘贴,支持操作的撤销、恢复功能,可以很方便的对记录的笔记进行编辑。
2.系统业务时序图分析
第二次迭代阶段与第一次迭代阶段相同业务的时序图基本相同,不同的业务如用户进行文献模糊查询、在笔记上进行插入图片表格时序图如下:
(1)用户进行文献模糊查询的时序图,如图5-4。
(2)用户在笔记添加图片、表格的时序图,如图5-5。
图5-4 文献模糊查询时序图
图5-5 添加图片、表格时序图
5.3 系统设计
5.3.1增加系统业务类
经过第一次迭代后交付的系统经使用后,发觉某些功能还不具备,进行第二次迭代阶段的需求分析,此阶段要完成文献的重要程度分级、文献的高级(模糊搜索)功能,完成笔记的复杂格式编辑功能,能向笔记插入截图或表格功能。
增加类ImageSelection,它是用于进行复制粘贴用户选择的截图或各种格式文件。
增加类InsertTableModel,它是用于向笔记里插入自定义行列数的表格。
其中在笔记里插入截图、表格和设置格式化文本要涉及到如何保存的问题。本系统没有采用将图片、表格和格式化文本存入数据库中,而是另辟蹊径采用对象序列化技术。
在面向对象的编程思想里,万物皆为对象。对象序列化就是把对象写入到输出流中,用来存储或传输,只要该对象实现Serializable接口即可。如在笔记系统里,当在笔记JtextPane[参api]控件里添加图片、表格和格式化文字时,可以把此控件里的内容看为一个对象,运用序列化方法将此对象写入到输出流中,文件名即以笔记标题名命名。当日后要读取内容时,运用反序列化方法从对应的文件名输入流中读取对象。
增加界面类AdvancedQueryDialog,它是进行“高级搜索”功能的对话框,当选择主窗口的菜单项“高级搜索”时,弹出此窗口。根据需要进行不同条件的匹配,点击此窗口的“确定”按钮,对是否能在此系统数据库中查出此文献给出明确的信息。
5.3.2设计模式的应用
在日后的学习过程中当需要添加新的文献和笔记种类并创建新的实例时,通常是用new对象方法来产生实例,新产生的每个类往往要重新做许多初始化工作,每个新类的初始化工作都是通过构造方法完成的。随着需求的增加,类的构造方法也变得越来越复杂,有的甚至要影响到父类类Document和类Note,使得父类扩展性差,这明显违背了面向对象的分装和分派。因此,我们可以通过采用工厂模式方法解决此问题。
现以文献类型中仅有期刊、图书和学位论文为例。应用工厂模式方法的思想是创建Client作为客户端角色,通过这个角色创建工厂对象,然后调用工厂对象里的工厂方法创建相应的产品对象。接口Creator充当抽象工厂(Creator)角色,这个角色是工厂方法模式的核心,它是与应用程序无关的。类Creator1,类Creator2,类Creator3,充当具体工厂(ConcreteCreator)角色,它们都实现了接口Creator。接口Document和接口Note充当抽象产品(Product)角色,是工厂方法模式所创建对象的超类型。类Journals,类Book,类Thesis充当具体产品(ConcreteProduct)角色,它们也都实现了接口Document。接口Creator不负责所有的产品的创建,而将创建产品的工作交给它们的子类JournalsCreator、BookCreator和ThesisCreator去做,分别创建Journals、Book和Thesis对象。这样当我们以后在程序中需要再添加如学术报告、会议和电子文献等对象时,不需要修改我们的客户端及接口Creator和接口Document,只需要分别创建接口Creator和接口Document的子类即可,对系统架构改动少,进而能使得该系统具有更好的扩展性。工厂模式设计图如5-6所示。