浏览 1680 次
锁定老帖子 主题:实战多系统通用功能抽取的设计思路
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-09
业务逻辑大致如下,当前产品推出了多个套餐。套餐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下。 优点:多个应用使用同一份代码,通用的功能代码在一处维护。 不合理或者完善的地方还请大家批评指正,谢谢! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |