這篇文章主要講解了“面向?qū)ο笤O(shè)計(jì)原則是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“面向?qū)ο笤O(shè)計(jì)原則是什么”吧!
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),槐蔭網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:槐蔭等地區(qū)。槐蔭做網(wǎng)站價(jià)格咨詢:028-86922220
設(shè)計(jì)原則是設(shè)計(jì)模式的理論基礎(chǔ),設(shè)計(jì)模式就是它們的實(shí)踐。七大設(shè)計(jì)原則簡單歸納如下表所示:
設(shè)計(jì)原則 | 概括 | 目的 |
---|---|---|
開閉原則 | 對擴(kuò)展開放,對修改關(guān)閉 | 降低維護(hù)帶來的新風(fēng)險(xiǎn) |
里氏替換原則 | 不要破壞繼承體系,子類重寫方法功能發(fā)生改變,不應(yīng)該影響父類方法的含義 | 防止繼承泛濫 |
依賴倒置原則 | 高層不應(yīng)該依賴低層,要面向接口編程 | 更利于代碼結(jié)構(gòu)的升級擴(kuò)展 |
單一職責(zé)原則 | 一個類只干一件事,實(shí)現(xiàn)類要單一 | 便于理解,提高代碼的可讀性 |
接口隔離原則 | 一個接口只干一件事,接口要精簡單一 | 功能解耦,高聚合、低耦合 |
迪米特原則 | 不該知道的不要知道,一個類應(yīng)該保持對其它對象最少的了解,降低耦合度 | 減少代碼臃腫 |
合成復(fù)用原則 | 盡量使用組合或者聚合關(guān)系實(shí)現(xiàn)代碼復(fù)用,少使用繼承 | 降低代碼耦合 |
原則思想: 軟件實(shí)體應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)。
描述:一個軟件產(chǎn)品在生命周期內(nèi),都會發(fā)生變化,既然變化是一個既定的事實(shí),當(dāng)應(yīng)用的需求改變時,在不修改軟件實(shí)體的源代碼或者二進(jìn)制代碼的前提下,可以擴(kuò)展模塊的功能,使其滿足新的需求。
優(yōu)點(diǎn):提高代碼的可復(fù)用性,提高軟件的可擴(kuò)展性和可維護(hù)性。
思想: 繼承必須確保超類所擁有的性質(zhì)在子類中仍然成。
描述:子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能。子類可以實(shí)現(xiàn)父類的抽象方法,但不能覆蓋父類的非抽象方法,子類中可以增加自己特有的方法。 反映了基類與子類之間的關(guān)系,是對開閉原則的補(bǔ)充,是對實(shí)現(xiàn)抽象化的具體步驟的規(guī)范。
優(yōu)點(diǎn):增加程序的健壯性, 類的擴(kuò)展不會給已有的系統(tǒng)引入新的錯誤,降低了代碼出錯的可能性。
思想:高層次的模塊不應(yīng)該依賴于低層次的模塊,它們都應(yīng)該依賴于抽象,抽象不應(yīng)該依賴于具體實(shí)現(xiàn),具體實(shí)現(xiàn)應(yīng)該依賴于抽象。
描述: 在軟件設(shè)計(jì)中,細(xì)節(jié)具有多變性,而抽象層則相對穩(wěn)定,因此以抽象為基礎(chǔ)搭建起來的架構(gòu)要比以細(xì)節(jié)為基礎(chǔ)搭建起來的架構(gòu)要穩(wěn)定得多。 使用接口或者抽象類的目的是制定好規(guī)范和契約,而不去涉及任何具體的操作,把展現(xiàn)細(xì)節(jié)的任務(wù)交給它們的實(shí)現(xiàn)類去完成。依賴倒置原則是實(shí)現(xiàn)開閉原則的重要途徑之一,它降低了客戶與實(shí)現(xiàn)模塊之間的耦合。
優(yōu)點(diǎn): 降低類間的耦合性; 提高代碼的可讀性和可維護(hù)性; 減少并行開發(fā)引起的風(fēng)險(xiǎn)。
思想:一個類(或方法www.jqmms.com)只負(fù)責(zé)一件事情。 就是控制類的粒度大小、將對象解耦、提高其內(nèi)聚性。
描述: 又稱單一功能原則,這里的職責(zé)是指類變化的原因,單一職責(zé)原則規(guī)定一個類應(yīng)該有且僅有一個引起它變化的原因,否則類應(yīng)該被拆分。 如果一個對象承擔(dān)了太多的職責(zé),至少存在兩個缺點(diǎn):1、一個職責(zé)的變化可能會削弱或者抑制這個類實(shí)現(xiàn)其他職責(zé)的能力;2、當(dāng)客戶端需要該對象的某一個職責(zé)時,不得不將其他不需要的職責(zé)全都包含進(jìn)來,從而造成冗余代碼或代碼的浪費(fèi)。
優(yōu)點(diǎn):降低類和類的耦合, 降低類的復(fù)雜度, 提高可讀性,增加可維護(hù)性和可拓展性,降低可變性的風(fēng)險(xiǎn)。
原則思想:類和類之間應(yīng)該建立在最小接口的上。
描述: 要求程序員盡量將臃腫龐大的接口拆分成更小的和更具體的接口,讓接口中只包含客戶感興趣的方法。 要為各個類建立它們需要的專用接口,而不要試圖去建立一個很龐大的接口供所有依賴它的類去調(diào)用。
優(yōu)點(diǎn):提高程序的靈活度,提高內(nèi)聚,減少對外交互,使得最小的接口做最多的事情。
注意: 接口的粒度需要合理定義,如果 定義過小,則會造成接口數(shù)量過多,使設(shè)計(jì)復(fù)雜化;如果定義太大,靈活性降低,無法提供定制服務(wù),給整體項(xiàng)目帶來無法預(yù)料的風(fēng)險(xiǎn)。
接口隔離原則和單一職責(zé)都是為了提高類的內(nèi)聚性、降低它們之間的耦合性,體現(xiàn)了封裝的思想,但兩者是不同的:
# 單一職責(zé)原則注重的是職責(zé),而接口隔離原則注重的是對接口依賴的隔離。
# 單一職責(zé)原則主要是約束類,它針對的是程序中的實(shí)現(xiàn)和細(xì)節(jié);接口隔離原則主要約束接口,主要針對抽象和程序整體框架的構(gòu)建。
原則思想:一個對象應(yīng)當(dāng)對其他對象有盡可能少地了解,簡稱類間解耦
描述:一個類盡量減少自己對其他對象的依賴,原則是低耦合,高內(nèi)聚,只有使各個模塊之間的耦合盡量的低,才能提高代碼的復(fù)用率。
優(yōu)點(diǎn):低耦合,高內(nèi)聚,提高類的可復(fù)用性和系統(tǒng)的可擴(kuò)展性。
注意: 過度使用迪米特法則會使系統(tǒng)產(chǎn)生大量的中介類,從而增加系統(tǒng)的復(fù)雜性,使模塊之間的通信效率降低。所以,在釆用迪米特法則時需要反復(fù)權(quán)衡,確保高內(nèi)聚和低耦合的同時,保證系統(tǒng)的結(jié)構(gòu)清晰。
原則思想:由于合成或聚合可以將已有對象納入到新對象中,使之成為新對象的一部分,因此新對象可以調(diào)用已有對象的功能。
描述: 它要求在軟件復(fù)用時,要盡量先使用組合或者聚合等關(guān)聯(lián)關(guān)系來實(shí)現(xiàn),其次才考慮使用繼承關(guān)系來實(shí)現(xiàn)。 一般而言,如果一個角色得到了更多的責(zé)任,那么可以使用合成/聚合關(guān)系將新的責(zé)任委派到合適的對象。當(dāng)然,這種復(fù)用也有缺點(diǎn)。最主要的缺點(diǎn)就是通過這種復(fù)用建造的系統(tǒng)會有較多的對象需要管理。
優(yōu)點(diǎn): 維持了類的封裝性,成分對象的內(nèi)部細(xì)節(jié)是新對象看不見的,所以這種復(fù)用又稱為“黑箱”復(fù)用。新舊類之間的耦合度低,這種復(fù)用所需的依賴較少,新對象存取成分對象的唯一方法是通過成分對象的接口。復(fù)用的靈活性高,這種復(fù)用可以在運(yùn)行時動態(tài)進(jìn)行,新對象可以動態(tài)地引用與成分對象類型相同的對象。
實(shí)際上,這些原則的目的只有一個:降低對象之間的耦合,增加程序的可復(fù)用性、可擴(kuò)展性和可維護(hù)性。 在實(shí)際開發(fā)過程中,并不是一定要求所有代碼都遵循設(shè)計(jì)原則,而是要綜合考慮人力、時間、成本、質(zhì)量,不刻意追求完美,要在適當(dāng)?shù)膱鼍白裱O(shè)計(jì)原則。這體現(xiàn)的是一種平衡取舍,可以幫助我們設(shè)計(jì)出更加優(yōu)雅的代碼結(jié)構(gòu)。
感謝各位的閱讀,以上就是“面向?qū)ο笤O(shè)計(jì)原則是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對面向?qū)ο笤O(shè)計(jì)原則是什么這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
分享名稱:面向?qū)ο笤O(shè)計(jì)原則是什么
本文網(wǎng)址:http://sd-ha.com/article22/jgedcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、標(biāo)簽優(yōu)化、ChatGPT、外貿(mào)建站、用戶體驗(yàn)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)