1. 基本的功能:
对照片文件的批处理功能
由使用者指定一个文件目录作为源目录。
使用者指定一个目录作为目标目录
软件将逐个处理该目录下所有的.jpg文件,在屏幕上显示该目录上正在处理的结果。
将处理得到的结果存放到目标目录中。2. 用户可以指定处理方法软件将提供多种对图像的基本处理方法。
比如:改变大小,柔化,加画框,旋转角度,…
用户可以将这些处理方法组合起来,并指定为当前处理序列。
比如:要求软件先做出柔化,然后改变画面大小到达指定状态,加画框。
每个图片将顺序经过这些处理,然后将得到的目标图像存放到目标状态。
当前不要求用户能够在批处理过程中改变处理组合,但是要求软件运行时刻修改这些顺序。
不要求软件可以在安装之后再添加新的处理方法。大家可以考虑如果需要实现这个功能的时候需要如何设计3. 用户界面主要界面分为两个部分:
显示正在被处理的图片的窗口。
每个正在被处理的图片都应该被处理
有关照片操作组合的部分。
显示每个步骤做哪些处理,
当处理过程还没有开始的时候,用户可以修改这些步骤对应的处理方法,以及相应的参数。4. 体系结构风格的选择提示(1)MVC
Model包括两个部分:有关待处理的图片的数据和有关处理组合的各个数据的部分。
View也包括两个部分,如前页所示。
Controller可以发出的命令包括:
修改某个步骤的处理方法的命令。
选择相应的源目录和目标目录的命令。
开始/终止处理的命令。5. 体系结构风格的选择提示(2)
Pipe-Filter
用来实现对图片的处理功能。
每个处理步骤作为一个Filter。
考虑用多线程的方法来实现流水线。
考虑如何使用缓冲区来实现Pipe。
6.体系结构风格的选择提示(3)元层次结构
显然,我们可以使用一个元层次来描述流水线的每个部分需要做的处理是什么。
对于元层次的操作在运行环境中进行。
本例的MOP中并没有太多的限制。但是考虑一下下面的限制:
为一个图片的增加画框的操作之后不能够有柔化操作。有关设计模式
可以考虑使用Command设计模式来封装有关处理步骤的处理信息。
可以考虑使用Irretater模式来完成对所有的图片的枚举,以使得将来的数据来源有变化的时候可以比较轻松地修改处理方法。