幻想家

          愛吃飯
          posts - 0, comments - 0, trackbacks - 0, articles - 3

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          留言簿

          文章分類(3)

          文章檔案(3)

          搜索

          •  

          最新評論

          查詢無修改的模型處理

          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條件分支處理。

          具體代碼寫多了煩,不寫了。


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 苍梧县| 富裕县| 稷山县| 秭归县| 大港区| 大名县| 钟山县| 迁西县| 望城县| 英吉沙县| 鲁甸县| 白河县| 鹤山市| 阿坝| 湘西| 余江县| 高青县| 南雄市| 洛阳市| 虞城县| 闽清县| 濉溪县| 明水县| 基隆市| 永德县| 株洲市| 大宁县| 山阳县| 九江县| 昂仁县| 荔浦县| 西宁市| 沙河市| 怀集县| 临夏县| 化隆| 敦化市| 康马县| 区。| 南宫市| 新绛县|