本文主要是介绍转换规则,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Spring中Controller的继承架构如下图所示。
由于Java不支持多重继承,直接导致了MutilController和SimplFormController不能直接同时使用;而这两者又是项目中很需要的Controller。因此需要考虑整合的问题。
网上可以搜到一些整合方案,但我这里谈一下另外的途径,即自己封装SimpleFormController的功能。
SimpleFormController的功能无非是利用反射配置,而且我记得Spring对自己的反射功能并未优化。虽然反射所多耗费的几十毫秒对一个大系统而言并非瓶颈所在,但如果能预留提升空间可以防备不时之需。
另外SimpleFormController的形式仍有改进余地,起码可以自己在配置过程中进行合法性判断。如下函数
Convert(request, rules, new Object())
rules可以有如下的形式{“username-string”, “password-string-null2empty”}.
该rules指示了从request中提取username参数和password参数,并且如果password参数为null,则装换为””。
显见request与object为1对1的映射,即只要request确定,可以唯一确定一个类的实例,通过转换规则rule。
类似的1对1的映射还出现在网络传输中。将接收到的byte[]通过定义好的规则,转换为一个类的实例。规则可以写成如下的格式{“4*int*big-endian*username”, ”4*int*little-endian*password”},其中指定了字段所占的字节数,字段类型,网络编码或者主机编码,以及字段名。其中字段名项可要可不要,依赖于是否采用反射方式配置对象实例。
文件类型判断也可以采用相应的技巧。读取文件的前n个byte,直接按照一定规则将其装配成实例,进而判断文件类型。
问题的“眼”在规则转换。当将需求转换为实现的规则一定,则将转换过程黑匣化。输入需求,则直接转换为需要的实现。只不过此需求不像1+1那么简单。
类似的,Object2byte[]也是一种规则转换,easy。
这篇关于转换规则的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!