Posted on 2011-04-13 16:10
森 阅读(105)
评论(0) 编辑 收藏 所属分类:
项目架构
在业务中经常把类型给抽象出来作为一个表,这样的表有一个特点就是需要经常查到,但是基本不用修改到。而这种做法很致命的一点就是作为写业务的程序员必须了解数据库的某条记录的编号,然后写进去代码里面,这是完全违反开闭原则的,一旦有修改需要找出所有的代码并修改。
像下面的代码:
1 public static String getFilePath(String fileType) {
2 String filePath = "";
3 Integer type = 57;
4 if (null != fileType && !"".equals(fileType)) {
5 type = Integer.parseInt(fileType);
6 }
7 switch (type) {
8 case 53:
9 filePath = "userfiles/images";
10 break;
11 case 54:
12 filePath = "userfiles/video";
13 break;
14 case 55:
15 filePath = "userfiles/audio";
16 break;
17 case 56:
18 filePath = "userfiles/document";
19 break;
20 case 57:
21 filePath = "userfiles/others";
22 break;
23 default:
24 break;
25 }
26 return filePath;
27 }
真正的做法应该是将这些脱离于数据库,保存在文件。好处有
1.查询效率提高N多倍;
2.一旦修改了记录不用修改源代码,而源代码要查找文件,完全符合开闭 原则;
3.让程序员更容易理清楚关系,用XML或者其他文件在表示树等结构上面明显有优势;
4.修改记录的成本变得很低,甚至都不用开发一个软件来修改了,只要直接编辑文件就是了(当然不赞成这样,不利于权限管理等)
当然,这样就还有一个问题,程序员需要关注什么。这里建议用工厂模式。
首先建立一个抽象工厂封装,将几种产品的调用做个封装,对外提供一个方法,这个方法只需要一个“类型参数”。就按照上面的例子,可以对外提供images,video,audio等几个类型参数,所有程序员编程的时候就按照这个分类写代码,调用封装类以后在进行switch条件分支处理。
具体代码写多了烦,不写了。