`
mqlfly2008
  • 浏览: 12637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

对老系统校验的改造设计

 
阅读更多

批单校验优化部分的改造基于可扩展,良好的可读性和可测试性的思路。基于这样的思路,我把校验分成了三部分。校验因子,校验规则,以及获取校验因子数据功能。校验因子以javabean的形式表述。校验规则根据校验因子做与或非的逻辑校验。数据获取功能通过对javabean做动态代理的方式插入。达到三个功能间的解耦!以期达到职责单一。从而得到一个可以对各个模块做单独测试的目的。
原始机制
原来的批单逻辑校验部分,各个页面通过调用统一的action url路径。在action层做所有的逻辑校验。校验逻辑混合在一个action方法中。校验逻辑之间没有明显划分。校验因子数据的获取与校验逻辑混合!这种方式在代码可读性和可扩展性都不强。



如果质押解质需求有所改变,需要根据另外一个校验因子做判断。那将会导致需要通读这全段代码,找到所有关于质押的校验,然后挨个条件。对于不懂质押需求的开发人员,做这件事相信风险是非常大的!同事,这些代码还被揉杂在其他诸如收付状态灯的校验当中。修改的复杂度在这种需求的不断变更中不断被拉高!

基于职责链于动态代理模式对校验逻辑的改造
优化设计如下:

1. 类设计




2. 类职责说明
a) Factor 做为一个因子接口的存在,里面只有对因子的get ,set方法
b) FactorBean 做为因子的具体实现。
c) validateHendler 作为一个校验的抽象类。是职责链模式的一部分
d) ValidateA实现了validateHendler ,同时它也继承了基类中的成员变量和该成员变量的设置值和获取值的方法!
e) InvocationHandler是jdk提供的一个接口,实现jdk动态代理必须实现的一个接口
f) FactorInvokerA 实现了invovationHandler接口,同时依赖了接口Factor,因此也就具有了对Factor设置值得能力。
3. 部分代码示例
a) 测试代码:


b) Factor接口代码


c) FactorBean代码


d) 校验抽象类代码


e) 打印校验类代码


f) 具体handler类代码


改造后获得的优势
外层调用不需要知道校验因子该如何设置,也不需要知道具体该如何校验,只用创建多个单一的校验类,以一个链的形式去做校验!彻底隔离了action于校验部分。

具体的校验类不需要知道因子应该如何获取,只需要调用代理就可以获得需要的因子,使得校验规则能够清晰展现。

获取因子的方法被封装到一个个的代理类中。方便扩展校验因子

由于各个类的职责单一,而且彻底脱离了action层,因此测试代码可以非常容易的编写。
当前改造方案的不足
设计一个Factor接口,主要是因为jdk提供的动态代理,只能对接口做代理。因为不想做过多的代码添加,另外考虑到往工程中添加额外的jra包,可能会导致jra版本不一致,以及jra之间的依赖风险。所以也没有采用spring的动态代理。

如果想要在保单验证或者其他验证部分服用该部分代码,只能通过在Factor中添加因子。将会导致Factor膨胀等问题。
  • 大小: 13.8 KB
  • 大小: 19.5 KB
  • 大小: 7.6 KB
  • 大小: 13.3 KB
  • 大小: 6.7 KB
  • 大小: 27.3 KB
  • 大小: 22.9 KB
  • 大小: 45.1 KB
分享到:
评论

相关推荐

    微服务应用系统迁移上云改造模型

    此外,针对系统上云过程中数据量庞大的一致性校验问题,设计了一种基于吉布斯采样的数据一致性采样校验方法,提高了数据一致性校验的效率,减少了系统上云工作量.之后通过国网安徽电力SG-I6000微服务系统上云的实际...

    简易数字电子称系统设计.doc

    8 2.3.3 CL7107的A/D转换器的工作过程 11 2.4 数字显示电路的设计 13 2.5 电源部分的设计 14 2.5.1 电源电路的结构及各部分作用 14 2.5.2 参数计算 16 2.6 电路校验 17 3设计总电路图 19 4设计的PCB板图 20 5方案...

    220 kV变电站GPS时间同步系统实现技术

    基于220 kV变电站全球定位系统(GPS)时间同步系统项目的实施经验,总结了实现时间同步系统需要考虑的关键技术和问题,主要从对时设计、运行监测、对时校验、对时误差等进行了分析探讨。要求在变电站内实现GPS统一对时,...

    基于单片机数字温度计设计课程设计.docx

    基于单片机的数字温度计设计引言随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续...

    110KV终端变电站设计包

    电气主接线设计:根据系统专业提供的具体资料,确定采用两台主变方案还是三台主变方案,并进行短路电流计算、设备选择和校验等。 防雷接地设计:根据规程要求,进行变电站的防雷接地设计,包括直击雷防护、感应雷...

    新酷CMS网站管理系统 10.018.78.rar

    本系统采用开放式设计,每个文件皆有相应说明,助你轻松改造。 四、使用: 数据库设置:前台数据库链接地址修改在Ft_conn.asp文件中,后台数据库链接地址修改在admin/Ft_conn_admin.asp文件中; 网站基本参数...

    基于jvm-sandbox-repeater重新开发的一款流量回放平台产品

    我想做一个业务监控系统,对线上核心接口采样之后做一些业务校验,实时监控业务正确性 Moonbox(月光宝盒)是一个无侵入的线上流量录制 和流量回放平台,沿用了jvm-sandbox-repeater的SPI设计,并提供了大量的常用...

    VC与Labview、Matlab编程论文资料[2].rar

    以LabVIEW为开发平台的电子式互感器校验仪设计.pdf 以VC++为平台电传训练系统研究与实现.pdf 使用MFC和ADO实现不规则窗口通讯录.pdf 分布式软件动态配置环境可视化的研究与实现.pdf 利用Debug探索VisualC_编程原理....

    VC与Labview、Matlab编程论文资料

    以LabVIEW为开发平台的电子式互感器校验仪设计.pdf 以VC++为平台电传训练系统研究与实现.pdf 使用MFC和ADO实现不规则窗口通讯录.pdf 分布式软件动态配置环境可视化的研究与实现.pdf 利用Debug探索VisualC_编程原理....

    VC与Labview、Matlab编程论文资料[4].rar

    以LabVIEW为开发平台的电子式互感器校验仪设计.pdf 以VC++为平台电传训练系统研究与实现.pdf 使用MFC和ADO实现不规则窗口通讯录.pdf 分布式软件动态配置环境可视化的研究与实现.pdf 利用Debug探索VisualC_编程原理....

    基于51单片机的温度计设计.doc

    单片机原理与接口技术课程设计 课程名称: 单片机原理与接口技术 设计题目: 基于51单片机的数字温度计设计 专 业: 信 息 工 程 设 计 者: 指导老师: 摘要 随着现代信息技术的飞速发展和传统工业改造的逐步实现....

    基于单片机的数字温度计设计(1).doc

    基于单片机的数字温度计设计 引言 随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测 和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的 成本低,但需后续...

    变电站智能电子设备动态重构闭锁逻辑生成多代理系统

    利用多代理技术,管理动态重构管控主机、数据采集与监控(SCADA)主机、电力系统拓扑校验、变电站五防闭锁规则库生成软件等功能组件,构建多代理系统,完成电力系统拓扑校验和闭锁逻辑生成等任务的交互策略与协调流程,...

    微信公众平台与小程序开发 从零搭建整套系统

    4.3.2 JS-SDK权限校验 45 4.3.3 网页远程调试 45 4.4 前端调试工具 46 4.4.1 谷歌浏览器开发者工具 48 4.5 移动端抓包与调试 50 4.5.1 Charles抓包工具 55 4.6 小结 56 第5章 基于...

    优秀商用密码应用方案与建设方案并案例汇编.zip

    数据完整性保护:采用国际通用的消息摘要算法对商业数据进行完整性校验,确保数据在传输过程中不被篡改。 数字签名与身份认证:采用数字签名技术对商业数据进行签名,保证数据的真实性和不可否认性。同时,采用...

    微信公众平台与小程序开发 从零搭建整套系统.part2

    本资源是《微信公众平台与小程序开发 从零搭建套系统》高清PDF扫描版。该书由张剑明著,中国工信出版集团和人民邮电出版社联合出版,有需要的小伙伴可以下载学习参考。 本书目录如下: 第1章 微信生态 1.1 微信:...

    微信公众平台与小程序开发 从零搭建整套系统.part1

    本资源是《微信公众平台与小程序开发 从零搭建套系统》高清PDF扫描版。该书由张剑明著,中国工信出版集团和人民邮电出版社联合出版,有需要的小伙伴可以下载学习参考。 本书目录如下: 第1章 微信生态 1.1 微信:...

    千米深井回风井临时提升能力验算与设备选型研究

    提人进风井进行临时提升系统改造,通过提出与比对两种改造方案,确定了选用落地式多绳摩擦提升机布置方式,分别对钢丝绳、提升机以及相关设备进行选型及校验,给出了提升系统最大班作业时间平衡表,计算结果表明设计的...

    基于 springboot Bootstrap3 thymeleaf搭建的一套CMS管理后台+源代码+文档说明

    基于 springboot Bootstrap3 thymeleaf 结合mybatis xml配置,搭建的一套CMS管理后台.jon-cms是一套通用易改造的系统。 1、**使用@UnLoginLimit注解来管控免登陆接口,在Controller方法上添加。** 2、**使用...

    jvm-sandbox-repeater:基于JVM-Sandbox的Java服务器端记录和回放解决方案

    我想做一个业务监控系统,对线上核心接口采样之后做一些业务校验,实时监控业务正确性。 如果你有以上的想法或需求, 都将是你的不二选择方案;框架基于JVM-Sandbox,拥有JVM-Sandbox的一切特性,同时封装了以下能力...

Global site tag (gtag.js) - Google Analytics