本篇內(nèi)容介紹了“java設(shè)計模式的基本原則有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)建站擁有網(wǎng)站維護(hù)技術(shù)和項目管理團(tuán)隊,建立的售前、實施和售后服務(wù)體系,為客戶提供定制化的成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、雅安機(jī)房托管解決方案。為客戶網(wǎng)站安全和日常運維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、商城建設(shè)、政府網(wǎng)站等各類型客戶群體,為全球1000多家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。
設(shè)計模式(Design pattern)代表了程序開發(fā)的最佳實踐,通常被有經(jīng)驗的面向?qū)ο蟮能浖_發(fā)人員所采用。設(shè)計模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。這些解決方案是眾多軟件開發(fā)人員經(jīng)過相當(dāng)長的一段時間的試驗和錯誤總結(jié)出來的,那設(shè)計模式有那些基本設(shè)計原則的呢?
通常來說,設(shè)計模式的基本原則包含以下 7 個內(nèi)容:
單一職責(zé)原則(Single Responsibility Principle)
單一職責(zé)原則表示一個模塊的組成元素之間的功能相關(guān)性。從軟件變化的角度來看,就一個類而言,應(yīng)該僅有一個讓它變化的原因;通俗地說,即一個類只負(fù)責(zé)一項職責(zé)。
SRP 是一個簡單又直觀的原則,但是在實際編碼的過程中很難將它恰當(dāng)?shù)剡\用,需要結(jié)合實際情況進(jìn)行運用。
單一職責(zé)原則可以降低類的復(fù)雜度,一個類僅負(fù)責(zé)一項職責(zé),其邏輯肯定要比負(fù)責(zé)多項職責(zé)簡單。
提高了代碼的可讀性,提高系統(tǒng)的可維護(hù)性。
開放-關(guān)閉原則(Open-Closed Principle)
開放-關(guān)閉原則表示軟件實體 (類、模塊、函數(shù)等等) 應(yīng)該是可以被擴(kuò)展的,但是不可被修改。
如果一個軟件能夠滿足 OCP 原則,那么它將有兩項優(yōu)點:
能夠擴(kuò)展已存在的系統(tǒng),能夠提供新的功能滿足新的需求,因此該軟件有著很強(qiáng)的適應(yīng)性和靈活性。
已存在的模塊,特別是那些重要的抽象模塊,不需要被修改,那么該軟件就有很強(qiáng)的穩(wěn)定性和持久性。
里氏替換原則(Liskov Substitution Principle)
將一個基類對象替換成它的子類對象,程序?qū)⒉粫a(chǎn)生任何錯誤和異常,反過來則不成立,如果一個軟件實體使用的是一個子類對象的話,那么它不一定能夠使用基類對象。即子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能
依賴倒轉(zhuǎn)原則(Dependence Inversion Principle)
高層模塊不應(yīng)該依賴低層模塊,二者都應(yīng)該于抽象。進(jìn)一步說,抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。遵循依賴倒轉(zhuǎn)原則可以降低類之間的耦合性,提高系統(tǒng)的穩(wěn)定性,降低修改程序造成的風(fēng)險。依賴倒轉(zhuǎn)原則的核心就是要我們面向接口編程
接口隔離原則(Interface Segregation Principle)
客戶端不應(yīng)該依賴它不需要的接口;一個類對另一個類的依賴應(yīng)該建立在最小的接口上
接口隔離原則的思想在于建立單一接口,盡可能地去細(xì)化接口,接口中的方法盡可能少
但是凡事都要有個度,如果接口設(shè)計過小,則會造成接口數(shù)量過多,使設(shè)計復(fù)雜化。所以一定要適度
迪米特法則(Law Of Demeter)
迪米特法則又稱為 最少知道原則,它表示一個對象應(yīng)該對其它對象保持最少的了解。通俗來說就是,只與直接的朋友通信。
直接的朋友:每個對象都會與其他對象有耦合關(guān)系,只要兩個對象之間有耦合關(guān)系,我們就說這兩個對象之間是朋友關(guān)系。耦合的方式很多,依賴、關(guān)聯(lián)、組合、聚合等。其中,我們稱出現(xiàn)成員變量、方法參數(shù)、方法返回值中的類為直接的朋友,而出現(xiàn)在局部變量中的類則不是直接的朋友。也就是說,陌生的類最好不要作為局部變量的形式出現(xiàn)在類的內(nèi)部。
對于被依賴的類來說,無論邏輯多么復(fù)雜,都盡量的將邏輯封裝在類的內(nèi)部,對外提供 public 方法,不對泄漏任何信息。
組合/聚合復(fù)用原則(Composite/Aggregate Reuse Principle)
組合/聚合復(fù)用原則就是在一個新的對象里面使用一些已有的對象,使之成為新對象的一部分; 新的對象通過向這些對象的委派達(dá)到復(fù)用已有功能的目的。
在面向?qū)ο蟮脑O(shè)計中,如果直接繼承基類,會破壞封裝,因為繼承將基類的實現(xiàn)細(xì)節(jié)暴露給子類;如果基類的實現(xiàn)發(fā)生了改變,則子類的實現(xiàn)也不得不改變;從基類繼承而來的實現(xiàn)是靜態(tài)的,不可能在運行時發(fā)生改變,沒有足夠的靈活性。于是就提出了組合/聚合復(fù)用原則,也就是在實際開發(fā)設(shè)計中,盡量使用組合/聚合,不要使用類繼承。
總體說來,組合/聚合復(fù)用原則告訴我們:組合或者聚合好過于繼承
聚合組合是一種 “黑箱” 復(fù)用,因為細(xì)節(jié)對象的內(nèi)容對客戶端來說是不可見的
“java設(shè)計模式的基本原則有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!