以前的人們寫代碼,都寫在main()方法中,如果出現了錯誤,就慢慢調試,這樣調試會浪費很多時間,而程序員的時間是非常寶貴的。但是當使用分層架構的時候,在系統出現錯誤的時候就可以清晰明確的知道錯誤出在哪里,現在的公司中百分百都是使用分層架構的,因為那樣可以分離我們程序員的關注,使代碼更為簡潔。
分層架構的好處
分層架構其實帶來了很多好處,首先就是方便維護和分離關注點,這一點前面已經提到了。
便於更改或替換
先說說便於替換或者更新,比如我現在用的數據庫是SQL Server數據庫,如果我需要將數據庫更換為MySQL,在增刪改查的語法一致的情況下,我們只需要更改BaseDao工具類的連接字符串,而不用更改其它層的代碼。
實現軟件之間的解耦
解耦之后,每個部分都可以獨立變化。
舉個簡單的例子,畫一個三角形和畫一個文字,在DX和OpenGL下面用的是截然不同的方法(不僅僅是函數名不一樣)。但是你哪一天你發現,你愛用DX還是OpenGL,絲毫不影響你如何畫三角形還是文字,愛畫什么畫什么,那么你畫的東西跟你畫的手段就解耦了。這個解耦的具體做法就是在中間插入一層接口(interface)。軟件的所有問題都可以通過增加一層interface來解決。你的團隊越大,需求變化越快,你越要保證程序員之間的依賴關系越少,你的軟件解耦的就越好,interface就越多,關系就越復雜(跟亂不一樣),應付變化就越容易,錢賺的就越多,越穩定。
做提高軟件組件的重用
在軟件開發中,由於不同的環境和功能要求,我們可以通過對以往成熟軟件系統的局部修改和重組,保持整體穩定性,以適應新要求。這樣的軟件稱為可重用軟件。
分層的架構和解析
代碼分層可大致分為:
DAO(數據訪問對象):該層分為接口和他的實現類來實現功能,dao子目錄只提供對外接口,而他的實現類要放到數據訪問層,就是impl層。
DTO(Data Transfer Object,數據傳輸對象):主要用於遠程調用等需要大量傳輸對象的地方。 比如我們一張表有100個字段,那么對應的PO就有100個屬性。 但是我們界面上只要顯示10個字段, 客戶端用WEB Service來獲取數據,沒有必要把整個PO對象傳遞到客戶端, 這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構。到達客戶端以后,如果用這個對象來對應界面顯示,那此時它的身份就轉為VO。
BIZ(業務邏輯層):跟dao層一樣只提供接口。
Model(實體層):用於讀、取數據。
JavaBean:javaBean在MVC設計模型中是model,又稱模型層,在一般的程序中,我們稱它為數據層,就是用來設置數據的屬性和一些行為,然后我會提供獲取屬性和設置屬性的get/set方法。
Servlet:用於跟JSP頁面進行交互。
POJO(Plain Ordinary Java Object,簡單無規則的Java對象):傳統意義的Java對象。就是說,在一些Object/Relation Mapping工具中,能夠做到維護數據庫表記錄的Persisent Object完全是一個符合Java Bean規范的Java對象,沒有增加別的屬性和方法。我的理解就是最基本的Java Bean,只有屬性字段及setter和getter方法。
"你的氣質里,藏着你走過的路,讀過的書和愛過的人。"