在分解複雜的軟件系統時,設計者用的最多的技術之一就是分層。 java
優勢:一、複雜問題分解簡單化,每一層負責本身的實現,並向外提供服務。 mysql
二、職責分離,複雜的系統都有不少人員進行開發,這些功能開發的管理和集成是個很嚴重的問題,分層設計實現以後,每層只需定義好本身的對外接口,其餘依賴層服務的就能夠進行開發。
sql
三、每一層對其餘層都是獨立的,上層無需知道下層的細節,只需調用服務便可,減小學習成本。
數據庫
四、有利於標準化
tomcat
缺點:一、分層以後對於領域業務的修改有可能須要修改不少層。
服務器
二、過多的層次影響性能
性能
依賴的原則:上層依賴下層,下層不能依賴上層。 學習
分層實現的難度在於 肯定每一層的職責,特別是領域層。 spa
表現層運行在IE(六、七、八、九、10)? 設計
領域層運行在服務器上(javaEE服務器、tomcat..)?
數據源層(選擇什麼樣的數據庫,mysql、Oracle、hbase)?
在實際開發中,層次之間界定並非很是明顯,在表現層寫業務邏輯控制,在領域層寫數據訪問,這些對於小型的,快速開發使用的系統並不會形成很大問題,一般狀況下,這些系統後續變動修改較少,要修改就從新再作一套,這就是大部分小型軟件開發做坊的開發模式。
規範化是企業運行上一個臺階的表現,爲的是防止人員流動風險,減小重複勞動,合理管理。