成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

設(shè)計(jì)模式之軟件設(shè)計(jì)七大原則

ixlei / 2844人閱讀

摘要:引申意義子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能。含義當(dāng)子類的方法實(shí)現(xiàn)父類的方法時(shí)重寫重載或?qū)崿F(xiàn)抽象方法,方法的后置條件即方法的輸出返回值要比父類更嚴(yán)格或相等。優(yōu)點(diǎn)約束繼承泛濫,開閉原則的一種體現(xiàn)。降低需求變更時(shí)引入的風(fēng)險(xiǎn)。

0x01.開閉原則

定義:一個(gè)軟件實(shí)體如類,模塊和函數(shù)應(yīng)該對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉

要點(diǎn):

當(dāng)變更發(fā)生時(shí),不要直接修改類,而是通過繼承擴(kuò)展的方式完成變更

用抽象構(gòu)建框架,用實(shí)現(xiàn)擴(kuò)展細(xì)節(jié)

預(yù)先設(shè)計(jì)好抽象

優(yōu)點(diǎn):提高軟件系統(tǒng)的可復(fù)用性及可維護(hù)性

面向抽象編程,實(shí)現(xiàn)抽象化,抽象出業(yè)務(wù)模型

提高內(nèi)聚,降低耦合

樣例代碼:https://github.com/sigmako/design-pattern/tree/master/design-principle/src/main/java/org/ko/design/principle/openclose

0x02.依賴倒置原則

定義:高層模塊不應(yīng)該依賴低層模塊,二者都應(yīng)該依賴其抽象

這個(gè)設(shè)計(jì)原則比較好理解,首先高層模塊只接口或者父類,接口或父類不該依賴其派生子類

抽象不應(yīng)該依賴細(xì)節(jié);細(xì)節(jié)應(yīng)該依賴抽象。

針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程。

優(yōu)點(diǎn):可以減少類間的耦合性,提高系統(tǒng)穩(wěn)定性,提高代碼可讀性和可維護(hù)性,可降低修改程序所造成的風(fēng)險(xiǎn)

樣例代碼:https://github.com/sigmako/design-pattern/tree/master/design-principle/src/main/java/org/ko/design/principle/dependenceinversion

0x03.單一職責(zé)原則

定義:不要存在多余一個(gè)導(dǎo)致類變更的原因,就一個(gè)類而言,應(yīng)該只存在一個(gè)導(dǎo)致其變更的原因。

一個(gè)類/接口/方法只負(fù)責(zé)一項(xiàng)職責(zé)

降低類的復(fù)雜度,提高類的可讀性,提高系統(tǒng)的可維護(hù)性,降低變更引起的風(fēng)險(xiǎn)

樣例代碼:https://github.com/sigmako/design-pattern/tree/master/design-principle/src/main/java/org/ko/design/principle/singleresponsibility

0x04.接口隔離原則

用多個(gè)專門的接口,而不是使用單一的總接口,客戶端不應(yīng)該依賴它不需要的接口

一個(gè)類對(duì)一個(gè)類的依賴應(yīng)該建立在最小的接口上

建立單一接口,不要建立龐大臃腫的接口

盡量細(xì)化接口,接口中的方法盡量少

注意適度原則,一定要適度,否則會(huì)造成類爆炸

優(yōu)點(diǎn):符合我們常說的高內(nèi)聚低耦合的設(shè)計(jì)思想,從而使類具有很好的可讀性,可擴(kuò)展性和可維護(hù)性

樣例代碼:https://github.com/sigmako/design-pattern/tree/master/design-principle/src/main/java/org/ko/design/principle/interfacesegregation

0x05.迪米特法則(最少知道原則)

定義:一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象保持最少的了解。又叫最少知道原則

盡量降低類與類之間的耦合

降低類之間的耦合

強(qiáng)調(diào)只和朋友交流,不和陌生人說話

朋友:出現(xiàn)在成員變量,方法的輸入,輸出參數(shù)中的類稱為成員朋友類,而出現(xiàn)在方法體內(nèi)部的類不屬于朋友類。

類與類之間的引用,盡量只是直接關(guān)系的引用,避免不必要的耦合。

樣例代碼:https://github.com/sigmako/design-pattern/tree/master/design-principle/src/main/java/org/ko/design/principle/demeter

0x06.里氏替換原則

定義:如果對(duì)每一個(gè)類型為T1的對(duì)象o1,都有類型為T2的對(duì)象o2,使得以T1定義的所有程序P在所有的對(duì)象o1都替換成o2時(shí),程序P的行為沒有發(fā)生變化,那么類型T2是類型T1的子類型。

定義擴(kuò)展:一個(gè)軟件實(shí)體如果適用一個(gè)父類的話,那一定適用于其子類,所有引用父類的地方必須能透明的使用其子類的對(duì)象,子類對(duì)象能夠替換父類對(duì)象,而程序邏輯不變。

引申意義:子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能。

含義1:子類可以實(shí)現(xiàn)父類的抽象方法,但不能覆蓋父類的非抽象方法

含義2:子類中可以增加自己特有的方法

含義3:當(dāng)子類的方法重載父類的方法時(shí),方法的前置條件(即方法的輸入/入?yún)ⅲ┮雀割惙椒ǖ妮斎雲(yún)?shù)更寬松。

含義4:當(dāng)子類的方法實(shí)現(xiàn)父類的方法時(shí)(重寫/重載或?qū)崿F(xiàn)抽象方法),方法的后置條件(即方法的輸出/返回值)要比父類更嚴(yán)格或相等。

優(yōu)點(diǎn)1:約束繼承泛濫,開閉原則的一種體現(xiàn)。

優(yōu)點(diǎn)2:加強(qiáng)程序的健壯性,同事變更時(shí)也可以做到非常好的兼容性,提高程序的維護(hù)性、擴(kuò)展性。降低需求變更時(shí)引入的風(fēng)險(xiǎn)。

樣例代碼:https://github.com/sigmako/design-pattern/tree/master/design-principle/src/main/java/org/ko/design/principle/liskovsubstitution

0x07.合成/復(fù)用原則(組合/復(fù)用原則)

定義:盡量適用對(duì)象組合/聚合,而不是繼承關(guān)系達(dá)到軟件復(fù)用的目的

聚合has-A和組合contains-A

優(yōu)點(diǎn):可以適用系統(tǒng)更加靈活,降低類與類之間的耦合度,一個(gè)類的變化對(duì)其他類造成的影響相對(duì)較少

何時(shí)適用合成/聚合,繼承

聚合has-A, 組合contains-A, 繼承 is-A

樣例代碼:https://github.com/sigmako/design-pattern/tree/master/design-principle/src/main/java/org/ko/design/principle/compositionaggregation

0x08.代碼工程

七大設(shè)計(jì)原則: https://github.com/sigmako/design-pattern/tree/master/design-principle

0x09.參考

慕課網(wǎng)設(shè)計(jì)模式精講: https://coding.imooc.com/class/270.html

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74708.html

相關(guān)文章

  • Java設(shè)計(jì)模式七大原則

    摘要:?jiǎn)我宦氊?zé)原則開閉原則里氏替換原則依賴倒置原則接口隔離原則迪米特法則組合聚合復(fù)用原則單一職責(zé)原則高內(nèi)聚低耦合定義不要存在多于一個(gè)導(dǎo)致類變更的原因。建議接口一定要做到單一職責(zé),類的設(shè)計(jì)盡量做到只有一個(gè)原因引起變化。使用繼承時(shí)遵循里氏替換原則。 單一職責(zé)原則 開閉原則 里氏替換原則 依賴倒置原則 接口隔離原則 迪米特法則 組合/聚合復(fù)用原則 單一職責(zé)原則(Single Responsi...

    Olivia 評(píng)論0 收藏0
  • java七大設(shè)計(jì)原則

    摘要:在我們做系統(tǒng)設(shè)計(jì)時(shí),經(jīng)常會(huì)設(shè)計(jì)接口或抽象類,然后由子類來實(shí)現(xiàn)抽象方法,這里使用的其實(shí)就是里氏替換原則。 1.開閉原則(Open Close Principle/OCP) 定義:一個(gè)類、模塊和函數(shù)應(yīng)該對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。 開放-封閉原則的意思就是說,你設(shè)計(jì)的時(shí)候,時(shí)刻要考慮,盡量讓這個(gè)類是足夠好,寫好了就不要去修改了,如果新需求來,我們?cè)黾右恍╊惥屯晔铝?,原來的代碼能不動(dòng)則不動(dòng)。這個(gè)...

    Prasanta 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來做一個(gè)萬能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    Dionysus_go 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來做一個(gè)萬能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    vspiders 評(píng)論0 收藏0
  • SOA架構(gòu)技術(shù)概述

    摘要:在汽車行業(yè),因汽車智能化和網(wǎng)聯(lián)化需求尤其是自動(dòng)駕駛系統(tǒng)應(yīng)用的需要,車載系統(tǒng)軟件架構(gòu)技術(shù)受到國(guó)內(nèi)外整車企業(yè)的關(guān)注。當(dāng)前,大眾奧迪寶馬福特等汽車巨頭自成聯(lián)盟進(jìn)行軟件架構(gòu)技術(shù)和規(guī)范的應(yīng)用研究,預(yù)計(jì)前后將開始應(yīng)用于量產(chǎn)車型。 ?一、SOA架構(gòu)聲明SOA架構(gòu)聲明用來解釋SOA架構(gòu)和面向服務(wù)的基礎(chǔ)設(shè)計(jì)理念,致力于解決面向服務(wù)的核心價(jià)值...

    番茄西紅柿 評(píng)論0 收藏2637

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<