现在公司做的是监督系统,使用的客户比较多,但是各个客户给出需求不可能都是一样的。现在公司是这样做的:
假设石家庄A公司和保定市B公司要用我们的系统,公司都是用一套代码的,然后在代码里面做了逻辑判断,如:
if(秦皇岛){
//////
}else if(石家庄){
///////
} 这样的话,一套代码就可以同时适应A公司和B公司了,但是这样,由于客户越来越多,导致代码中出现了很多的if
else 判断,维护起来十分的麻烦的。
个人想到的解决思路:
1、使用多套代码
找出各个客户需求中的公共模块,把所有的通用模块(如分页、工作流)抽象出来,假设最后抽象出了五个通用模块,
如果石家庄用户要用我们的系统,同时提出了个性化需求,则我们可以以五个通用模块为基础,然后加上
个性化实现,最后组成一套代码。
但是这样的话,如果客户越多,而且需求都不太相同,那么如果有100个客户,则就有100套代码。
2、一套代码
可以针对石家庄写出对应的实现类,针对秦皇岛也是写出一套实现类,然后用接口管理起来。
想要实现的效果是这样的:
在配置文件中输入石家庄,然后系统启动的时候,就会自动的去加载对应的石家庄实现类。
这样的话就是一套代码了。不过这个估计实现起来有些难度。
想问的问题:
各个客户都要用监督系统,虽然监督系统的大致业务流程差不多,但是不同客户提出的需求还是不一样的。
那么在这种情况下是使用多套代码呢?还是使用一套代码?如果是多套代码的话,我上面的提的那种方式是否
可行,有更好的吗?如果是一套呢?又该如何处理好?
一套代码则维护起来不太容易。而多套代码则如果客户多的话,则会有很多的套代码。 请教一下,大家是如何处理这个问题的呢?
假设石家庄A公司和保定市B公司要用我们的系统,公司都是用一套代码的,然后在代码里面做了逻辑判断,如:
if(秦皇岛){
//////
}else if(石家庄){
///////
} 这样的话,一套代码就可以同时适应A公司和B公司了,但是这样,由于客户越来越多,导致代码中出现了很多的if
else 判断,维护起来十分的麻烦的。
个人想到的解决思路:
1、使用多套代码
找出各个客户需求中的公共模块,把所有的通用模块(如分页、工作流)抽象出来,假设最后抽象出了五个通用模块,
如果石家庄用户要用我们的系统,同时提出了个性化需求,则我们可以以五个通用模块为基础,然后加上
个性化实现,最后组成一套代码。
但是这样的话,如果客户越多,而且需求都不太相同,那么如果有100个客户,则就有100套代码。
2、一套代码
可以针对石家庄写出对应的实现类,针对秦皇岛也是写出一套实现类,然后用接口管理起来。
想要实现的效果是这样的:
在配置文件中输入石家庄,然后系统启动的时候,就会自动的去加载对应的石家庄实现类。
这样的话就是一套代码了。不过这个估计实现起来有些难度。
想问的问题:
各个客户都要用监督系统,虽然监督系统的大致业务流程差不多,但是不同客户提出的需求还是不一样的。
那么在这种情况下是使用多套代码呢?还是使用一套代码?如果是多套代码的话,我上面的提的那种方式是否
可行,有更好的吗?如果是一套呢?又该如何处理好?
一套代码则维护起来不太容易。而多套代码则如果客户多的话,则会有很多的套代码。 请教一下,大家是如何处理这个问题的呢?
解决方案 »
- ftp上传文件550异常
- JSP 页面实现预存款
- java 货币格式化问题
- 测试用例要怎么写?
- 疑惑:这样的J2EE项目的数据逻辑层怎么做?
- 请问,如何导入一个开源的EJB程序到eclipse中?
- 高手请进,请问com.inet.tds.TdsDataSource这个包在哪里下或?
- 我一直想搞明白,J2EE和strus的关系是什么?请高手指教!谢谢
- 300百分求解,关于resin3.0.10与IIS6的结合问题?
- JBuilder (Server是WebLogic)中,Web Component(包括Servlet和JSP)如何调用EJB?
- dwr.jar的版本是1.1.4,它支持DWREngine.setAsync(false)方法嗎
- 为什么tomcat5.5 在日语操作系统下启动不了。。。。求助
对于石家庄公司设置接口SjzInterface,此接口持有ABC三个模块的引用,
同样对于秦皇岛的公司设置接口QhdInterface也持有ABC模块的引用,
所有公司业务逻辑相同的的操作放在ABC模块中。对于某个公司的特定需求可以建立其独有的模块,
此模块只被某一个接口引用。
这应该属于多套代码,如果客户很多且大都需要些独有功能时可能会造成功能模块繁多,这是一个缺点。
// 代表秦皇岛
public static final int CITY_QHD = 1;
// 代表石家庄
public static final int CITY_SJZ = 2;然后这样:
switch(arg){
case XXXX.CITY_QHD:
...
break;
case XXXX.CITY_SJZ:
...
break;
}