• 适配器设计模式应用实例


    最近我们项目组在对PLM版本进行升级,我们需要从2013版升级到2016版,在升级过程中我们发现一个问题,在2013及之前的版本中,数据表的过滤器支持两种方式来从Oracle数据库动态获取数据:

    1. Java程序的方式,写一个方法,根据实际需求构建查询条件,从数据库获取到数据后再返回到JSP数据表页面,这种方式Enovia PLM称之为program的方式。

    2. Inquiry的方式,inquiry由MQL(一种数据库语言,类似于SQL的功能)写出来的,inquiry可以直接从数据库获取数据再返回给页面。

    但是从2016版本开始,Enovia PLM的数据表过滤器不再支持inquiry的方式,仅支持program的方式。这就头大了,因为我们有206个inquiry, 都是关于数据表过滤器的,如果我们把这206个inquiry都转换为program的方式,不仅工程量大而且测试起来也要花大量时间。

    那么如何用最小的改动来解决好这个问题呢?

    我想到了适配器模式,我们可以让客户端(数据表请求者)的代码不做任何改变,它可以使用program或inquiry的方式,但是它的请求会首先经过一个验证器,判断获取数据的方式是哪一种,如果是inquiry的话就会调用programAdapter把inquiry的方式转换为使用program的方式来获取数据, 这样的设计有一些好处:

    1. 客户端的代码不需要修改。

    2. 新PLM版本关于过滤器的逻辑也不需要改动。

    3. 抽取并封装了变化的部分,也就是适配器,如果2017版本对于过滤器有什么改动,我们依然可以修改或扩展适配器的逻辑来满足需要,这样就会有好的可维护性。

    为了便于大家从流程上弄清逻辑我上个流程图:

  • 相关阅读:
    windows环境变量
    软件工程的一般过程和需要的文档
    linux find 命令查找文件和文件夹
    mybatis中mapUnderscoreToCamelCase自动驼峰命名转换
    人体湿气重有哪些表现? 细数湿气重的危害
    MySQL升级后1728错误解决方案
    linux清理Java环境
    无线投屏PC投电视
    report studio 交叉表占比
    Cognos审核模块的导入与设置
  • 原文地址:https://www.cnblogs.com/stonefeng/p/5738579.html
Copyright © 2020-2023  润新知