java責任鏈模式審批流程 自學java怎么入門?
自學java怎么入門?其實編程語言的學習,尤其是對于有編程經(jīng)驗的人來說,應該掌握語言的主要元素,比如幾乎每一種語言都有變量、函數(shù)、集合(如數(shù)組、字典、類、結構等。)、過程控制(if-else、brea
自學java怎么入門?
其實編程語言的學習,尤其是對于有編程經(jīng)驗的人來說,應該掌握語言的主要元素,比如幾乎每一種語言都有變量、函數(shù)、集合(如數(shù)組、字典、類、結構等。)、過程控制(if-else、break、continu
Java項目的代碼,你們都是怎么設計分層的?分層有什么好處?
在我看來,Java項目分層簡直是必須的,即使一個項目是一個人獨立開發(fā)的,也要進行代碼分層;我現(xiàn)在負責的項目沒有參考任何代碼層次規(guī)范,因為項目的框架是我自己搭建的,也是我憑經(jīng)驗設計的,有些地方摻雜了一些個人喜好。
分包我們的項目分幾個包,但沒有到微服務的程度,因為公司的一些基礎不是很完善,比如容器、容器管理工具、持續(xù)集成。雖然已經(jīng)起步,但還不夠成熟,無法用于生產(chǎn)環(huán)境。畢竟是金融行業(yè),穩(wěn)定大于創(chuàng)新。
我們的項目現(xiàn)在按照功能模塊分成包,比如接口服務、定時服務、前端頁面、監(jiān)控等等;
前端頁面是純前端頁面(I m不確定這個描述是否清晰),頁面需要的所有數(shù)據(jù)都是通過調(diào)用接口獲得的,接口本身不與數(shù)據(jù)庫交互;
其他項目可以獨立部署,相關的功能通過MQ解耦。
分層在單個項目中,分層的設計是一樣的,類似于主流的代碼分層(我們項目的大部分功能都是接口,少數(shù)頁面功能也分在單獨的包里):
DAO層:數(shù)據(jù)訪問對象,數(shù)據(jù)訪問對象,我們用MyBatis,在方法的注釋里寫SQL語句;
服務層:業(yè)務邏輯層,這里其他服務或DAO可能被稱為;我覺得有些系統(tǒng)的服務層會分為兩部分,一部分是功能單一的業(yè)務邏輯,一部分是組合。商業(yè)邏輯;個人覺得這個有點繁瑣;
控制器層:請求處理層,包括類型轉換和參數(shù)驗證的功能在這里完成;
模型層:數(shù)據(jù)的實體對象,與數(shù)據(jù)庫列名一致;類名也以型號命名;
領域層:我們?yōu)檩斎雲(yún)?shù)和返回參數(shù)做了一個單獨的層,但不與模型層混合;即使一個接口要查詢單個表,查詢結果也要把Model轉換成Domain;我們已經(jīng)在領域級別標準化了許多字段,以便保持其含義是已知的。領域層的內(nèi)容確定后,屬性名稱不變,但模型層的內(nèi)容允許修改。
其余的是Util、Contants、Config等等。
分層分包和分層的優(yōu)點看似讓代碼結構更加復雜,但這種結構的復雜實際上可以降低系統(tǒng)的復雜度:
單一責任:每層代碼只負責一類責任,責任邊界變得非常清晰;
高內(nèi)聚、低耦合、易維護:業(yè)務邏輯放在一起,可以快速修改,無遺漏;如果業(yè)務邏輯分散在多個代碼層,修改時需要修改多個代碼,必然導致遺漏;上層代碼依賴下層代碼,清晰,無循環(huán)依賴;
高重用性:一個功能是抽象的,可以在多個業(yè)務流程中重用。
我會繼續(xù)分享我對Java開發(fā)、架構設計、程序員職業(yè)發(fā)展等方面的看法,希望得到大家的關注。