java web開發當中,有這麼三層:controller、service、dao
分別爲表現層、業務邏輯層以及數據訪問層。
這樣分層的好處有很多,出了問題易於調試,或者便於團隊合作等等。
最重要的是,可以隨時換掉其中的某一層而不影響其他層,這都是借鑑於早期的程序設計經驗,計算機網絡體系也是這麼設計的。
在我初學時,總是認爲service層就是個累贅,認爲它只是對請求的轉發,但是隨着學習的深入、開發更復雜的應用,service層的作用就體現出來了,比如對數據的校驗,或者可以調用其他service層的服務,很多複雜的邏輯都是在service 層當中完成的。
對於dao層,一般來說這層都是提供對數據庫的訪問接口,但並不侷限於數據庫,有些應用壓根就不會用到數據庫,它只是一種抽象。
表現層,它則可以控制前兩層的數據是應該以怎樣的形式進行展現,可以通過jsp或者json、xml等等,這些都可以被稱作視圖。
但是在實際開發當中,不應該死守這三層架構,不應該什麼系統都要給他搞個三層。
無論解決什麼事,應該使用更簡單的方案。
比如我現在使用的這個博客系統,就是使用的三層架構,結果本來這麼一個簡單的系統,代碼搞得無比複雜,現在半年過去了,連維護都是一個大問題。
但是有些事,自己搞搞沒問題,如果在一個大團隊中,還是要遵守相應的規範,不能瞎搞。
你可以盡情地在自己的項目中使用各種各樣的新特性,什麼lambda表達式,stream api 儘管用,
又或者只在controller調用dao,還是在servlet當中一氣呵成寫個又臭又長的代碼,都沒有問題。
三層架構,的確是一個很好的通用解決方案,但還是要適時而變,找到適合自己的。