Posted on 2011-04-13 16:10
森 閱讀(114)
評論(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條件分支處理。
具體代碼寫多了煩,不寫了。