


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
面向?qū)ο蟮?個基本設(shè)計原則:單一職責原則(Single-ResposibilityPrinciple)其核心思想為:一個類,最好只做一件事,只有一個引起它的變化。單一職責原則可以看做是低耦合、高內(nèi)聚在面向?qū)ο笤瓌t上的引申,將職責定義為引起變化的原因,以提高內(nèi)聚性來減少引起變化的原因。職責過多,可能引起它變化的原因就越多,這將導致職責依賴,相互之間就產(chǎn)生影響,從而大大損傷其內(nèi)聚性和耦合度。通常意義下的單一職責,就是指只有一種單一功能,不要為類實現(xiàn)過多的功能點,以保證實體只有一個引起它變化的原因。專注,是一個人優(yōu)良的品質(zhì);同樣的,單一也是一個類的優(yōu)良設(shè)計。交雜不清的職責將使得代碼看起來特別別扭牽一發(fā)而動全身,有失美感和必然導致丑陋的系統(tǒng)錯誤風險。開放封閉原則(Open-Closedprinciple)其核心思想是:軟件實體應(yīng)該是可擴展的,而不可修改的。也就是,對擴展開放,對修改封閉的。開放封閉原則主要體現(xiàn)在兩個方面1、對擴展開放,意味著有新的需求或變化時,可以對現(xiàn)有代碼進行擴展,以適應(yīng)新的情況。2、對修改封閉,意味著類一旦設(shè)計完成,就可以獨立完成其工作,而不要對其進行任何嘗試的修改。實現(xiàn)開開放封閉原則的核心思想就是對抽象編程,而不對具體編程,因為抽象相對穩(wěn)定。讓類依賴于固定的抽象,所以修改就是封閉的;而通過面向?qū)ο蟮睦^承和多態(tài)機制,又可以實現(xiàn)對抽象類的繼承,通過覆寫其方法來改變固有行為,實現(xiàn)新的拓展方法,所以就是開放的。“需求總是變化”沒有不變的軟件,所以就需要用封閉開放原則來封閉變化滿足需求,同時還能保持軟件內(nèi)部的封裝體系穩(wěn)定,不被需求的變化影響。Liskov替換原則(Liskov-SubstituionPrinciple)其核心思想是:子類必須能夠替換其基類。這一思想體現(xiàn)為對繼承機制的約束規(guī)范,只有子類能夠替換基類時,才能保證系統(tǒng)在運行期內(nèi)識別子類,這是保證繼承復用的基礎(chǔ)。在父類和子類的具體行為中,必須嚴格把握繼承層次中的關(guān)系和特征,將基類替換為子類,程序的行為不會發(fā)生任何變化。同時,這一約束反過來則是不成立的,子類可以替換基類,但是基類不一定能替換子類。Liskov替換原則,主要著眼于對抽象和多態(tài)建立在繼承的基礎(chǔ)上,因此只有遵循了Liskov替換原則,才能保證繼承復用是可靠地。實現(xiàn)的方法是面向接口編程:將公共部分抽象為基類接口或抽象類,通過ExtractAbstractClass,在子類中通過覆寫父類的方法實現(xiàn)新的方式支持同樣的職責。Liskov替換原則是關(guān)于繼承機制的設(shè)計原則,違反了Liskov替換原則就必然導致違反開放封閉原則。Liskov替換原則能夠保證系統(tǒng)具有良好的拓展性,同時實現(xiàn)基于多態(tài)的抽象機制,能夠減少代碼冗余,避免運行期的類型判別。依賴倒置原則(Dependecy-lnversionPrinciple)其核心思想是:依賴于抽象。具體而言就是高層模塊不依賴于底層模塊,二者都同依賴于抽象;抽象不依賴于具體,具體依賴于抽象。我們知道,依賴一定會存在于類與類、模塊與模塊之間。當兩個模塊之間存在緊密的耦合關(guān)系時,最好的方法就是分離接口和實現(xiàn):在依賴之間定義一個抽象的接口使得高層模塊調(diào)用接口,而底層模塊實現(xiàn)接口的定義,以此來有效控制耦合關(guān)系,達到依賴于抽象的設(shè)計目標。抽象的穩(wěn)定性決定了系統(tǒng)的穩(wěn)定性,因為抽象是不變的,依賴于抽象是面向?qū)ο笤O(shè)計的精髓,也是依賴倒置原則的核心。依賴于抽象是一個通用的原則,而某些時候依賴于細節(jié)則是在所難免的,必須權(quán)衡在抽象和具體之間的取舍,方法不是一層不變的。依賴于抽象,就是對接口編程,不要對實現(xiàn)編程。接口隔離原則(Interface-SegregationPrinciple)其核心思想是:使用多個小的專門的接口,而不要使用一個大的總接口。具體而言,接口隔離原則體現(xiàn)在:接口應(yīng)該是內(nèi)聚的,應(yīng)該避免“胖”接口。一個類對另外一個類的依賴應(yīng)該建立在最小的接口上,不要強迫依賴不用的方法,這是一種接口污染。接口有效地將細節(jié)和抽象隔離,體現(xiàn)了對抽象編程的一切好處,接口隔離強調(diào)接口的單一性。而胖接口存在明顯的弊端,會導致實現(xiàn)的類型必須完全實現(xiàn)接口的所有方法、屬性等;而某些時候,實現(xiàn)類型并非需要所有的接口定義,在設(shè)計上這是'浪費”,而且在實施上這會帶來潛在的問題,對胖接口的修改將導致一連串的客戶端程序需要修改,有時候這是一種災難。在這種情況下,將胖接口分解為多個特點的定制化方法,使得客戶端僅僅依賴于它們的實際調(diào)用的方法,從而解除了客戶端不會依賴于它們不用的方法。分離的手段主要有以下兩種:1、委托分離,通過增加一個新的類型來委托客戶的請求,隔離客戶和接口的直接依賴,但是會增加系統(tǒng)的開銷。2、多重繼承分離,通過接口多繼承來實現(xiàn)客戶的需求,這種方式是較好的。以上就是5個基本的面向?qū)ο笤O(shè)計原則,它們就像面向?qū)ο蟪绦蛟O(shè)計中的金科玉律,遵守它們可以使我們的代碼更加鮮活,易于復用,易于拓展,靈活優(yōu)雅。不同的設(shè)計模式對應(yīng)不同的需求,而設(shè)計原則則代表永恒的靈
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園大班社會活動《課間十分鐘》教案(5篇)
- 2025年重慶市安全員知識題庫及答案
- 莆田學院《數(shù)據(jù)結(jié)構(gòu)(Java)》2023-2024學年第二學期期末試卷
- 天津中德應(yīng)用技術(shù)大學《商務(wù)數(shù)據(jù)分析》2023-2024學年第二學期期末試卷
- 濰坊學院《土地測量與評價》2023-2024學年第二學期期末試卷
- 邯鄲科技職業(yè)學院《風電機組設(shè)計與制造》2023-2024學年第二學期期末試卷
- 長治幼兒師范高等??茖W?!额A算管理模擬》2023-2024學年第二學期期末試卷
- 2025年江西省建筑安全員《B證》考試題庫
- 2025年湖南省安全員《A證》考試題庫及答案
- 揚州環(huán)境資源職業(yè)技術(shù)學院《通風空調(diào)A》2023-2024學年第二學期期末試卷
- 市政工程監(jiān)理規(guī)劃范本(完整版)
- 幼兒園小班語言:《我上幼兒園》 PPT課件
- 高標準農(nóng)田項目規(guī)劃設(shè)計和評審要點
- 小學三年級下冊綜合實踐活動.水果拼盤-(14張)ppt
- 部編版二年級語文下冊第三單元課文《傳統(tǒng)節(jié)日》PPT課件
- 北京市城市建設(shè)節(jié)約用地標準
- 開學第一課我們開學啦主題班會PPT課件(帶內(nèi)容)
- 電源線檢驗報告RVV
- 體育訓練隊隊規(guī)
- 八字命理漫畫版
- 電梯工程開工報告(直梯)(共1頁)
評論
0/150
提交評論