树状结构在资源映射配置上的应用
2009-03-12 15:22
232 查看
在很多应用场景中,都需要做到资源的可配置化管理。一般的方法是采用简单键值映射的方式。但对于多属性匹配的需求,这种映射方式使得程序对匹配失败条件的认定相当死板,代码的通用性和重用性都很差。
请看一个2个字段的资源映射匹配需求:
1. 先根据大类匹配,再根据小类匹配。
2. 如果大类匹配失败,读取系统默认资源;如果大类匹配成功,小类匹配失败,读取大类默认资源;
先用简单映射方式实现配置和解析:(假设有2种大类,每种大类下各有2个小类;并用伪代码进行解析)
<root>
<node 大类=“T1” 小类=“t1” 资源=“resource1_1”/>
<node 大类=“T1” 小类=“t2” 资源=“resource1_2”/>
<node 大类=“T2” 小类=“t1” 资源=“resource2_1”/>
<node 大类=“T2” 小类=“t1” 资源=“resource2_1”/>
<node 大类=“T1” 资源=“resource1”/>
<node 小类=“t1” 资源=“resource2”/>
<node 资源=“resource0”/>
</root>
要取得各种情况下的资源至少要做2次if-else判断。解析代码如下:
function getResoure1(param_1, param_2):String{
var 资源="";
If(node.(@ 大类==param_1&&@小类== param_2)!=null){
资源=node.@资源;
}else if(node.(@ 大类==param_1&&@小类!= param_2)!=null){
资源=node.@资源;
}else{
资源=node.@资源;
}
return资源;
}
可以想象如果是n个字段的匹配,至少要写n-1次的if判断。方法getResoure1无法重用,而且写的很难看。
树状的数据结构可以很好地解决这个问题。
<root 资源=“resource0”>
<node value=“T1” 资源=“resource1”>
<node value=“t1” 资源=“resource1_1”>
</node>
<node value=“t2” 资源=“resource1_2”>
</node>
</node>
<node 大类=“T2” 资源=“resource2”>
<node value=“t1” 资源=“resource2_1”>
</node>
<node value=“t2” 资源=“resource2_2”>
</node>
</node>
</ root >
解析代码如下:
function getResoure2(param:Array):String{// param为参数数组
var 资源=""
xml=root
for(var i=0;i<param.length;i++){
if(xml.node.(@value==param[i])){// xml.node是取xml的node子节点
xml= xml.node[0]
}else{
break;
}
}
资源=xml.@node
return 资源;
}
树形结构可以逐层循环匹配,所以无论需要匹配多少字段都需要修改代码,方法getResoure2可重用。
相关文章推荐
- hibernate映射应用 - 树状结构
- web应用之EBJ配置与扩展映射
- tomcat配置外部静态资源映射路径
- 使用Vue-cli搭建多页面应用时对项目结构和配置的调整
- 游戏开发的两大超级法宝---协程和树状结构配置
- hibernate树状结构映射
- Springmvc的静态资源映射配置
- hibernate第一天——分页显示,数字类型互相转换intvalue(crl+h),hibernate的配置与API,建立表结构,final类型,映射文件,主键
- Hibernate(三)结构-配置文件-实体映射及配置文件
- 类加载器的方式管理资源和配置文件/JavaBean/重构_内省的简单应用
- 反射应用之用类加载器的方式管理资源和配置文件
- Hibernate(二)结构-配置文件-实体映射及配置文件
- spring boot之spring mvc常用配置-静态资源映射(3)
- tomcat杂记(结构,自定义应用路径,权限配置等)
- hibernate之树状映射结构
- Juniper防火墙映射配置应用场景变异
- web服务器分层架构的资源文件映射安全以及在J2EE应用中的利用与危害
- 日常小结-tomcat结构目录、web应用及虚拟目录的映射
- 【SpringMVC】SpringMVC基础-静态资源映射、拦截器配置、@ControllerAdvice与其他基本配置
- Spring Boot 静态资源映射与上传文件路由配置