针对某个领域的某种产品,根据不同的产品,会有不同的使用要求,自然需要在软件功能上,有不同的设置参数。
这些设置参数通常保存为外部文件,独立于程序存在。这样保证了设置的可持续性,关机掉电后,设置都不会丢失。
一般来说,可能包含三类设置。
1,产品的固有设置,这部分是根据产品的特性进行的设置。
比如在产品出场时进行的屏幕参数矫正,硬件参数,产品的名称和序列号等。
这些设置有些是和产品的硬件相关的,有些是已经预定义好的,但共同特点是一旦产品出厂后,这些设置就不应该再更改了。
这类设置不是为用户开放的,设置之后,没有特殊原因是不能修改的。
将这些信息作为外置设置文件来存储,增强了软件了灵活性。
在机器上电启动后,做完必要初始化,就会读取此产品设置文件,来进行相应的更新。
而在产线上,操作工也可以根据实际情况,对这些设置进行修改,设置完成后可以出货。
2,一般参数的默认设置。
产品一般都会带一个恢复默认设置的功能,这个默认设置也是一个独立的处于程序外部的文件。
选择恢复默认,就会将这部分默认设计载入到软件程序中。
这个默认设置可以按照产品而定,也可以按照用户需求进行一定的需改。
比如有些用户有些偏好设置,就可以加入到默认设置中。
需要注意的是,如何理解默认设置。从程序本身角度讲,真正的默认设置在程序里,当产品上电,程序第一次执行,各个设置都会有默认的数值。
这些默认的数值是硬编码在程序中的,一般可能是用一些产品的宏定义来区分使能不同的代码,在代码中为不同的产品区分不同的设置。
然后,再会检查外部的默认配置文件是否存在,如果存在,则载入。
所以,在这个默认设置文件中,不需要存储所有的设置,只需要存储发生变化或需要更改的设置内容即可。
如果这个设置文件不存在,当用户执行恢复默认操作,则使用的就都是代码里写死的默认设置。
这个道理也同样适用于其他配置文件。
3,一般参数的实时设置。
这些设置是用户实时使用的设置。当用户修改过后的参数都会保存在这里,当下次重新上电或启动时会载入。
这些设置是根据用户使用实时变化的,比如音量、操作模式或一些记忆信息等设置。
而是用这个设置的目的,就是在程序运行起来后,根据这个设置文件来更新程序内存中的设置参数表。
也就是说,对于程序中实际使用的设置参数来讲,一个是保存在文件中的值,还一个是内存中的实际值。
一般情况下,内存中的值修改了,都会同步到文件中。
但在有些情况下,这两套设置值可以区分对待或使用,可以在程序运行中临时改变内存中的设置,而不同步到文件中。
根据使用情况来修改或使用设置值,并根据需要决定是否要存储到非易失性存储设备中。
所以,对于一般设置参数,内存中需要两份存储空间,一个表是实时使用的内存值,一个表是映射到外部存储文件的。
那根据上面的介绍,设置功能可以定义为3个类来管理:
ProductConfiguration ,DefaultConfiguration,WorkingConfiguration。
这里涉及的只是单个产品的设置管理,如果涉及多个设备的互联或组合,则需要令行考虑。
而具体类的设计,有待继续。