文/李智慧
Map与Model(JavaBean)之间存在逻辑映射关系,在存在Map实例的情况下,可通过调用该工具获得对应的Model实例,在存在Model实例的情况下,可通过调用该工具获得对应的Map实例。该工具支持JavaBean包含(成员类包含,成员类list包含),继承关系,使用composite模式。
</list>
类图
ModelMapBuilderFactory: ModelMap映射构建器工厂,负责create builder。初始化时生成全部构建规则树,并把树Root保存在Map中。
ModelMapBuilder:ModelMap映射构建器,根据输入的Map或Model执行映射规则,完成映射。
MappingRuler:映射规则接口,定义映射方法。
Root:映射规则树Root,通过遍历树中节点列表List<Node>并调用节点的映射方法完成映射。
Node:映射规则节点类,Abstract Class,声明节点共通成员,不实现接口映射方法。
Leaf:映射规则叶子节点类,对应配置文件中type为基本数据类型,实现接口映射方法,完成最终数据映射。
SingleBranch:映射规则单根分支节点类,对应配置文件中type为SingleClass,根据入力参数获得被映射的Map或Model,调用Root成员的映射方法,完成映射。
MultiBranch :映射规则多根分支节点类,对应配置文件中type为MultiClass,根据入力获得被映射的Map或Model的List,遍历 该 List 调用Root成员的映射方法,完成映射。时序图
上图表示通过配置文件转换model-to-map的调用关系:
1.1、User调用MapModelBuilderFactory的getBuilder()方法
1.2、MapModelBuilderFactory返回MapModelBuilder实例
1.3、调用MapModelBuilder的buildMap()方法构建map,或者调用MapModelBuilder的builderModel()方法构建model
2.1、MapModelBuilderFactory调用inti()初始化
2.2、MapModelBuilderFactory创建MapModelBuilder实例
2.3、返回MapModelBuilder实例
3.1、MapModelBuilder调用Root的buildMap()方法或者buildModel()方法
4.1、Root调用Node的buildMap()方法或者buildModel()方法