应用系统中的编码和编码规则
这个编码规则非编写程序的编码规则,而是应用系统中的编码规则。
每个系统都会有各种各样的编码,每个编码都对应有编码规则,我们从这些编码中可以提取出来一些共性的东西:编码代码,名称,描述等,还有一些方法:检查编码是否有效,生成一个新的编码,获得父编码代码等等,其中的这些方法都要依据编码规则来工作。
比如,财务系统里面的科目编码,科目代码就是编码代码,科目名称就是编码名称,科目的简介就是描述,而现在的财务系统的科目大部分都是采用不定级长的编码方式,这个就是编码规则。
编码是有共性的,而规则的共性就比较少(特别是属性),并且对同一个编码类,可以有不同的规则(比如,科目,也可以采用定级长的编码方式),所以规则的不确定性(针对同一个编码类,可以定义不同的规则,而这个不同的规则有可能是在你系统部署完成之后才有的),使我们想到用抽象工厂模式来设计这个编码规则类。采用工厂模式来设计规则类的目的,就是为了在增加了新的规则后,不用修改客户端的原代码就可以使客户端使用新的规则,如何实现这点呢?我们使用配置文件来实现这个目的,在配置文件里面来设定客户端使用的编码规则。
每个编码规则都有自己的设置参数,而这些参数是不同的。比较两个简单的规则,定级长和不定级长编码规则,定级长有2个参数:级数、级长,不定级长也有2个参数:级数、级长数组,其中级长数组用来保存每一级的长度。基于前面的描述,客户端也是不知道这些参数的,所以这些参数也需要使用配置文件来提供,客户端的一个编码类选择一个规则(注:这个选择也是基于配置文件的),同时设定这个规则的参数,而客户端的另一个编码类同样可以选择这个规则,也相应地设定这个规则的参数,这两个参数有可能是不同的(虽然都是同一个规则),所以这个配置文件要根据不同的编码类提供编码规则以及相应的参数。