java 基礎(chǔ) java是怎么分層的?
java是怎么分層的?分層結(jié)構(gòu):不同的功能代碼被封裝成類(lèi),具有相同功能的類(lèi)被封裝成包,也稱(chēng)為層。實(shí)體類(lèi):封裝數(shù)據(jù)是數(shù)據(jù)的載體。數(shù)據(jù)在層之間傳輸。數(shù)據(jù)庫(kù)中表的數(shù)量決定了程序中實(shí)體類(lèi)的數(shù)量。實(shí)體類(lèi)的名稱(chēng)與
java是怎么分層的?
分層結(jié)構(gòu):不同的功能代碼被封裝成類(lèi),具有相同功能的類(lèi)被封裝成包,也稱(chēng)為層。實(shí)體類(lèi):封裝數(shù)據(jù)是數(shù)據(jù)的載體。數(shù)據(jù)在層之間傳輸。數(shù)據(jù)庫(kù)中表的數(shù)量決定了程序中實(shí)體類(lèi)的數(shù)量。實(shí)體類(lèi)的名稱(chēng)與表名一致,實(shí)體類(lèi)中屬性的名稱(chēng)與表名字段的名稱(chēng)一致。持久性類(lèi):該層中的類(lèi)與數(shù)據(jù)庫(kù)交互,即數(shù)據(jù)持久性。與數(shù)據(jù)庫(kù)交互的所有代碼都在該層的類(lèi)中。這個(gè)名字叫道。業(yè)務(wù)類(lèi):業(yè)務(wù)類(lèi)用于處理業(yè)務(wù)邏輯的代碼,這一層稱(chēng)為服務(wù),頁(yè)面表示層用于表示或收集數(shù)據(jù)。Servlet類(lèi)也屬于表示層。R工具類(lèi):在開(kāi)發(fā)中,如果需要添加函數(shù),只需在每一層的類(lèi)中添加方法即可。此工具通常放在util包中。其原理是:Web->servlet->service->dao->數(shù)據(jù)庫(kù)->dao->service->servlet->jsp。后端代碼的復(fù)雜性通過(guò)拆分和除法來(lái)解決。首先,通過(guò)拆分項(xiàng)目,項(xiàng)目之間可以存在依賴(lài)關(guān)系,但必須是單向依賴(lài)而不是環(huán)依賴(lài)。如果存在環(huán),我們必須考慮將環(huán)依賴(lài)分解為單獨(dú)的項(xiàng)目來(lái)解決環(huán)依賴(lài)。
對(duì)于項(xiàng)目中的代碼,可以通過(guò)水平拆分和垂直拆分來(lái)降低復(fù)雜性。水平層分為控制器、服務(wù)、Dao和sqlmap,垂直層分為系統(tǒng)、biz1、biz2、Bizn,但在數(shù)據(jù)通暢連接中,水平拆分和垂直拆分相結(jié)合,如下圖所示:
通過(guò)這種分層方式,代碼層是分開(kāi)的,結(jié)構(gòu)清晰。對(duì)于一些跨模塊調(diào)用的接口,如同一個(gè)數(shù)據(jù)表需要在不同的模塊中操作時(shí),可以將該接口作為公共接口升級(jí)到上層cxmodule,對(duì)于一些可重用的、相對(duì)獨(dú)立的功能,可以在cxmodule中定義一個(gè)干凈的接口,業(yè)務(wù)邏輯可以通過(guò)在模塊的功能模塊中實(shí)現(xiàn)接口來(lái)實(shí)現(xiàn),而不需要使用spring的事務(wù)管理機(jī)制,從而降低代碼的復(fù)雜度。
寫(xiě)JAVA后端代碼時(shí)邏輯混亂怎么辦?
這些不是所謂的分層。要說(shuō)分層,也是動(dòng)作、服務(wù)、道三層。Biz和util只是用來(lái)存儲(chǔ)一些工具的文件夾。它們都起輔助作用。實(shí)際上,順序是操作調(diào)用服務(wù)調(diào)用Dao,然后返回的數(shù)據(jù)從Dao到服務(wù),再到操作,再到頁(yè)面進(jìn)行顯示