码迷,mamicode.com
首页 > 其他好文 > 详细

适配器设计模式应用实例

时间:2016-08-06 11:14:17      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

最近我们项目组在对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版本对于过滤器有什么改动,我们依然可以修改或扩展适配器的逻辑来满足需要,这样就会有好的可维护性。

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

技术分享

 

适配器设计模式应用实例

标签:

原文地址:http://www.cnblogs.com/stonefeng/p/5738579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!