`

转换规则

阅读更多

SpringController的继承架构如下图所示。

 


 
 

 

由于Java不支持多重继承,直接导致了MutilControllerSimplFormController不能直接同时使用;而这两者又是项目中很需要的Controller。因此需要考虑整合的问题。

网上可以搜到一些整合方案,但我这里谈一下另外的途径,即自己封装SimpleFormController的功能。

SimpleFormController的功能无非是利用反射配置,而且我记得Spring对自己的反射功能并未优化。虽然反射所多耗费的几十毫秒对一个大系统而言并非瓶颈所在,但如果能预留提升空间可以防备不时之需。

另外SimpleFormController的形式仍有改进余地,起码可以自己在配置过程中进行合法性判断。如下函数

 

Convert(request, rules, new Object())

 

rules可以有如下的形式{“username-string”, “password-string-null2empty”}.

rules指示了从request中提取username参数和password参数,并且如果password参数为null,则装换为””

 

显见requestobject11的映射,即只要request确定,可以唯一确定一个类的实例,通过转换规则rule

 

类似的11的映射还出现在网络传输中。将接收到的byte[]通过定义好的规则,转换为一个类的实例。规则可以写成如下的格式{“4*int*big-endian*username”, ”4*int*little-endian*password”},其中指定了字段所占的字节数,字段类型,网络编码或者主机编码,以及字段名。其中字段名项可要可不要,依赖于是否采用反射方式配置对象实例。

文件类型判断也可以采用相应的技巧。读取文件的前nbyte,直接按照一定规则将其装配成实例,进而判断文件类型。

 

问题的在规则转换。当将需求转换为实现的规则一定,则将转换过程黑匣化。输入需求,则直接转换为需要的实现。只不过此需求不像1+1那么简单。

类似的,Object2byte[]也是一种规则转换,easy

 

  • 大小: 12.1 KB
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics