是使用多套代码还是使用一套代码---架构

Sam_Deep_Thinking
Java领域新星创作者
博客专家认证
2010-02-25 03:49:30
现在公司做的是监督系统,使用的客户比较多,但是各个客户给出需求不可能都是一样的。

现在公司是这样做的:
假设石家庄A公司和保定市B公司要用我们的系统,公司都是用一套代码的,然后在代码里面做了逻辑判断,如:

if(秦皇岛){
//////
}else if(石家庄){
///////
}

这样的话,一套代码就可以同时适应A公司和B公司了,但是这样,由于客户越来越多,导致代码中出现了很多的if
else 判断,维护起来十分的麻烦的。


个人想到的解决思路:
1、使用多套代码
找出各个客户需求中的公共模块,把所有的通用模块(如分页、工作流)抽象出来,假设最后抽象出了五个通用模块,
如果石家庄用户要用我们的系统,同时提出了个性化需求,则我们可以以五个通用模块为基础,然后加上
个性化实现,最后组成一套代码。

但是这样的话,如果客户越多,而且需求都不太相同,那么如果有100个客户,则就有100套代码。

2、一套代码
可以针对石家庄写出对应的实现类,针对秦皇岛也是写出一套实现类,然后用接口管理起来。
想要实现的效果是这样的:
在配置文件中输入石家庄,然后系统启动的时候,就会自动的去加载对应的石家庄实现类。
这样的话就是一套代码了。不过这个估计实现起来有些难度。


想问的问题

各个客户都要用监督系统,虽然监督系统的大致业务流程差不多,但是不同客户提出的需求还是不一样的。
那么在这种情况下是使用多套代码呢?还是使用一套代码?如果是多套代码的话,我上面的提的那种方式是否
可行,有更好的吗?如果是一套呢?又该如何处理好?

一套代码则维护起来不太容易。而多套代码则如果客户多的话,则会有很多的套代码。

请教一下,大家是如何处理这个问题的呢?




...全文
238 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gonxi 2010-02-26
  • 打赏
  • 举报
回复
目前可以使用多套代码

尽快提取不同的地方,做成可配置的,

以后就维护一份
bayougeng 2010-02-26
  • 打赏
  • 举报
回复
你可以用final变量来控制嘛:
// 代表秦皇岛
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;
}
henry_fuzr 2010-02-26
  • 打赏
  • 举报
回复
觉得还是使用1号方案 比较好,可以给不同版本的代码设置版本号V_sjz_1.*** (石家庄1.****版本)。

2号太难维护了,而且以后会越来越麻烦。

zxw9887 2010-02-26
  • 打赏
  • 举报
回复
建立多套的比较好,在后期修护较比方便。同意楼上观点!
dikeskyjdy 2010-02-26
  • 打赏
  • 举报
回复
建立多套的比较好,在后期修护较比方便。
1by1 2010-02-26
  • 打赏
  • 举报
回复
当然是不同代码,时间长了只有一套代码的话,你都不敢改,生怕影响其他客户。
BearKin 2010-02-26
  • 打赏
  • 举报
回复
你在代码里做逻辑判断那个肯定是不对的..公共模块也是可以 不过能确保客户连这些东西也不改么?

反正正常情况下应该是多套代码 将能重用的 又是工程里必须的东西拿出来封装上 然后每次新建系统的时候 都通过这套类库? 去建立个新系统 大概吧..
winit 2010-02-26
  • 打赏
  • 举报
回复
使用多套代码比较合理
JavaAlpha 2010-02-25
  • 打赏
  • 举报
回复
可以使用一套代码 可以设置多个风格 就可以了。
chenzhg_01 2010-02-25
  • 打赏
  • 举报
回复
前端调用业务逻辑方法的时候不要直接调用功能模块,比如说现有三个通用功能模块A、B、C,
对于石家庄公司设置接口SjzInterface,此接口持有ABC三个模块的引用,
同样对于秦皇岛的公司设置接口QhdInterface也持有ABC模块的引用,
所有公司业务逻辑相同的的操作放在ABC模块中。对于某个公司的特定需求可以建立其独有的模块,
此模块只被某一个接口引用。
这应该属于多套代码,如果客户很多且大都需要些独有功能时可能会造成功能模块繁多,这是一个缺点。
zhigangxie 2010-02-25
  • 打赏
  • 举报
回复
当然多套代码呀,如果能抽象出共同的部分当然好,但一般情况下是没有足够的资源来抽象出一个好的通用框架的。
evilpaw 2010-02-25
  • 打赏
  • 举报
回复
不同套代码这样做
。。
维护起来还方便
huhaihong 2010-02-25
  • 打赏
  • 举报
回复
不同套代码比较好吧
我们客户的系统就是这样

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧