❶ java程序設計有哪些設計原則
內聚性
類應該描述一個單一的實體,而所有的類操作應該在邏輯上相互配合,支持一個一致的目的。例如:可以設計一個類用於學生,但不應該將學生與教職工組合在一個類中,因為學生和教職工是不同的實體。
如果一個實體擔負太多的職責,就應該按各自的職責分成幾個類。例如:String類、StringBuffer類和 StringBuilder類用於處理字元串,但是他們的職責不同。String類處理不變的字元串,StringBuilder類創建可變字元串, StringBuffer()
與 StringBuffer() 類還包含更新字元串的同步方法。
一致性
遵循標准java程序設計風格和命名習慣。為類、數據域和方法選取具有信息的名字。通常的風格是將數據聲明置於構造方法之前,並且將構造方法置於方法之前。
選擇名字要保持一致。給類似的操作選擇不同的名字並非良好的實踐。例如:Length() 方法返回String、StringBuilder 和 StringBuffer 的大小。如果在這些類中給這個方法用不同的名字就不一致了。
一般來說,應該具有一致性地提供一個公共無參的構造函數,用於構建默認實例。如果一個類不支持無參的構造函數,要用文檔寫出原因。如果沒有顯示定義構造方法,即假定有一個空方法體的公共默認無參構造方法。
如果不想讓用戶創建類的對象,可以在類中聲明一個私有的構造方法,Math類就是如此。
封裝性
一個類應該使用private修飾符隱藏其數據,以免用戶直接訪問它。這使得類更易於維護。只在希望數據域可讀的情況下,才提供get方法;也只在希望數據域可更新的情況下,才提供set方法。例如:Rational類為numerator和denominator提供了get方法,但是沒有提供set方法,因為Rational對象是不可改變的。
清晰性
為使設計清晰,內聚性、一致性和封裝性都是很好的設計原則。除此之外,類應該有一個很清晰的合約,從而易於解釋和理解。
用戶可以以各種不同的組合、順序,以及在各種環境中結合使用多個類。因此,在設計一個類時,這個類不應該限制用戶如何以及何時使用該類;以一種方式設計屬性,以允許用戶按值的任何順序和任何組合來設置;設計方法應該使得實現的功能與他們出現的順序無關。例如:Loan類包含屬性loanAmount、numberOfYears和annualIntereRate,這些屬性的值,可以按任何順序來設置。
方法應在不生產混淆的情況下進行直觀定義。例如:String類中的substring(int beginIndex, int endIndex)方法就有一點混亂。這個方法返回從beginIndex到endIndex-1而不是endIndex的子串。該方法應該返回從beginIndex到endIndex的子字元串,從而更加直觀。
不應該聲明一個來自其他數據域的數據域。例如,下面的Person類有兩個數據域:birthDate和age。由於age可以從birthDate導出,所以age不應該聲明為數據域。
❷ 寫java代碼所提倡的高內聚低耦合是什麼意思 能具體講講么
高內聚的概念,意味著在設計和編寫Java代碼時,要讓每個類或方法專注於執行單一功能。這有助於提升代碼的可維護性和可擴展性。例如,當你編寫一個類來處理數據輸入時,這個類應該只關注數據輸入的處理邏輯,而不涉及數據存儲或輸出的任何其他功能。
與此相反,低耦合是指減少類與類之間的依賴關系。如果一個類直接實例化了其他類,並且頻繁地調用這些類的方法,那麼當這些被依賴的類發生更改時,該類也必須相應地進行更改,這將增加代碼的復雜性並降低其靈活性。
舉個具體的例子,假設你有一個負責處理用戶注冊的類,該類直接實例化了一個資料庫訪問類和一個郵件發送類。如果資料庫訪問類或郵件發送類發生改變,那麼注冊類也需要進行相應的修改。這不僅增加了代碼的復雜性,還可能導致錯誤的傳播。
為了實現低耦合,可以使用介面或抽象類來定義依賴關系,而具體實現則通過依賴注入或其他設計模式來提供。這樣,當需要更改實現細節時,只需替換依賴的實現類即可,而無需修改依賴這些類的其他類。這種設計使得代碼更加模塊化和靈活。
高內聚低耦合的原則有助於開發更加穩定和可維護的軟體。通過專注於單一功能,每個類都能更加高效地執行其任務,而通過減少依賴關系,可以降低代碼的復雜性並提高其靈活性。這對於大型項目的管理和維護至關重要。
❸ java高內聚,低耦合怎樣理解
高內聚一般指功能內聚,共同完成同一功能,缺一不可,模塊不可再分割
耦合:一個軟體結構內不同模塊之間互連程度的度量
低耦合是java中使用介面等降低了耦合度,使程序具備良好的擴展性,易於修改
就是有的時候程序需要修改,我只需要改正一部分,單是如果程序的耦合性很強的話就需要從頭再寫一遍很不劃算,而正常的開發中都是改那部分,重寫那部分,把配置文件一改就成了,java中通過介面(interface),spring技術中的ioc等實現的解耦合