论坛首页 Java企业应用论坛

实战多系统通用功能抽取的设计思路

浏览 1660 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-07-09  
1.产品按指定的顺序显示。

业务逻辑大致如下,当前产品推出了多个套餐。套餐ID是从别人的接口中获取的,返回的是无顺序的。但是不排序的话,JSP页面上显示会很乱,这样有了对套餐排序的需求。

原来是在程序中定义了一个数组,以数组中套餐ID的顺序来排序,初步实现了套餐排序的功能。由于新套餐的推出较频繁,这样每次增加新套餐,数组就得做相应地改动,也就是每次都需要修改程序,生产系统的server也要重新启动,感觉需要改进。

如果有新套餐推出,不用修改程序,不用重启server,就比较理想了。于是有了如下想法:
做一个配置文件,将套餐信息包含其中,程序中解析此xml文件,根据文件中套餐的顺序进行排序。每次添加新套餐时,只要修改此xml文件,然后上传到生产系统就可以了(具体的实现很简单,不写了)。

2.产品按指定规则变更。

用户选择了某个套餐A,使用了一段时间后,发现还是套餐B更实惠,这样会对当前使用的套餐进行变更。业务规则如下:对套餐变更来讲,例如:5+套餐可以变更为15+,25,35+,45+;一段时间后,5+套餐不能变更为45+套餐了,而且套餐变更的规则变化较快。

用户登陆应用后,可以在页面上进行套餐变更操作。可变更的套餐在一个下拉框中显示,可变更套餐的获取并不难,目前用一个方法进行过滤。关键是:以后每次套餐变更规则时,程序都要修改,很麻烦。

解决办法与套餐排序几乎一样。


3.多应用中的通用功能的抽取。

我们的多个应用部署在同一个jboss server下。例如:应用A和应用B部署在同一jboss server下(目前只能这样),每个应用中都有一个配置文件a.xml(就是解决上面1,2产生的配置文件),格式相同内容不同。

a.xml中有套餐的信息,对于不同的系统来说,套餐的信息是不同的,例如A应用中需要配置10+,20+,30+,40+,50+套餐,应用B中需要配置5+,15+,25+,35+,45+套餐。

我们目前有多个应用,每个应用都有套餐的变更和排序的功能需求,大家的实现都差不多。于是就有了把以上两个功能抽出来,做一个jar包,假定为suite.jar每个应用中包含一份。


实现:

多个应用部署在同一个jboss server下,每个应用中包含一个suite.jar,server启动时,各应用通过各自suite.jar中的Listener中获取当前应用的a.xml的路径,然后加载它。为了维护的方便,各应用中的a.xml都是相同的,每个应用只取自己需要的部分。

将来会有更多系统上线,并且几乎都要用到同样的几个功能,如果在多个系统中维护同一份代码,感觉不是较好办法。以下是我的思路,大家都来指点一下,先谢过!

1)将这几个通用的功能抽取出来,做成一个Jar,分别放在各子系统中。
优点:通用的功能代码在一处维护,功能升级时,修改一份源程序即可。
缺点:在多个应用中散布着相同的Jar,其实也是在多个地方维护着同一份代码。

2)将这几个通用的功能做成一个Jar,放到Jboss的lib下。
优点:多个应用使用同一份代码,通用的功能代码在一处维护。


不合理或者完善的地方还请大家批评指正,谢谢!


论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics