国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【23種設(shè)計(jì)模式】設(shè)計(jì)模式綜述(開篇)

這篇具有很好參考價(jià)值的文章主要介紹了【23種設(shè)計(jì)模式】設(shè)計(jì)模式綜述(開篇)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、設(shè)計(jì)模式概述:

? 設(shè)計(jì)模式(Design pattern)代表了最佳的實(shí)踐,通常被有經(jīng)驗(yàn)的面向?qū)ο蟮能浖_發(fā)人員所采用。設(shè)計(jì)模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。這些解決方案是眾多軟件開發(fā)人員經(jīng)過相當(dāng)長的一段時(shí)間的試驗(yàn)和錯(cuò)誤總結(jié)出來的。是一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。

? 毫無疑問,設(shè)計(jì)模式于己于他人于系統(tǒng)都是多贏的,設(shè)計(jì)模式使代碼編制真正工程化,設(shè)計(jì)模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。項(xiàng)目中合理地運(yùn)用設(shè)計(jì)模式可以完美地解決很多問題,每種模式在現(xiàn)實(shí)中都有相應(yīng)的原理來與之對(duì)應(yīng),每種模式都描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問題,以及該問題的核心解決方案,這也是設(shè)計(jì)模式能被廣泛應(yīng)用的原因。

二、面向?qū)ο蟮?3中設(shè)計(jì)模式:

說明:這23種設(shè)計(jì)模式分為三大類,創(chuàng)建型模式、結(jié)構(gòu)型模式和行為型模式。
【23種設(shè)計(jì)模式】設(shè)計(jì)模式綜述(開篇)

創(chuàng)建型模式【5種】:

關(guān)注對(duì)象的創(chuàng)建。

創(chuàng)建型模式就是用來解決對(duì)象實(shí)例化和使用的客戶端耦合的模式,可以讓客戶端和對(duì)象實(shí)例化都獨(dú)立變化,做到相互不影響。

圖片

結(jié)構(gòu)型模式【7種】:

關(guān)注類與對(duì)象之間的組合。

結(jié)構(gòu)型模式主要研究的是類和對(duì)象的組合的問題。它包括兩種類型,一是類結(jié)構(gòu)型模式:指的是采用繼承機(jī)制來組合實(shí)現(xiàn)功能;二是對(duì)象結(jié)構(gòu)型模式:指的是通過組合對(duì)象的方式來實(shí)現(xiàn)新的功能。

圖片

行為型模式【11種】:

關(guān)注對(duì)象和行為的分離

行為型模式主要討論的是在不同對(duì)象之間劃分責(zé)任和算法的抽象化的問題。行為型模式又分為類的行為模式和對(duì)象的行為模式兩種。

  • 類的行為模式——使用繼承關(guān)系在幾個(gè)類之間分配行為。
  • 對(duì)象的行為模式——使用對(duì)象聚合的方式來分配行為。

圖片

三、設(shè)計(jì)模式六大原則詳細(xì)解析:

【23種設(shè)計(jì)模式】設(shè)計(jì)模式綜述(開篇)

單一職責(zé)原則【SRP】:

(1)SRP(Single ResponsibilitiesPrinciple)的定義:就一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因。簡而言之,就是功能要單一。

(2)如果一個(gè)類承擔(dān)的職責(zé)過多,就等于把這些職責(zé)耦合在一起,一個(gè)職責(zé)的變化可能會(huì)削弱或者抑制這個(gè)類完成其它職責(zé)的能力。這種耦合會(huì)導(dǎo)致脆弱的設(shè)計(jì),當(dāng)變化發(fā)生時(shí),設(shè)計(jì)會(huì)遭受到意想不到的破壞。

(3)軟件設(shè)計(jì)真正要做的許多內(nèi)容,就是發(fā)現(xiàn)職責(zé)并把那些職責(zé)相互分離。

小結(jié):單一職責(zé)原則(SRP)可以看做是低耦合、高內(nèi)聚在面向?qū)ο笤瓌t上的引申, 將職責(zé)定義為引起變化的原因,以提高內(nèi)聚性來減少引起變化的原因。責(zé)任過多,引起它變化的原因就越多,這樣就會(huì)導(dǎo)致職責(zé)依賴,大大損傷其內(nèi)聚性和耦合度。

開閉原則【OCP】:

開閉原則的意思是:對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。在程序需要進(jìn)行拓展的時(shí)候,不能去修改原有的代碼,實(shí)現(xiàn)一個(gè)熱插拔的效果。簡言之,是為了使程序的擴(kuò)展性好,易于維護(hù)和升級(jí)。想要達(dá)到這樣的效果,我們需要使用接口和抽象類,后面的具體設(shè)計(jì)中我們會(huì)提到這點(diǎn)。

(1)OCP(Open-ClosePrinciple)的定義:就是說軟件實(shí)體(類,方法等等)應(yīng)該可以擴(kuò)展(擴(kuò)展可以理解為增加),但是不能在原來的方法或者類上修改,也可以這樣說,對(duì)增加代碼開放,對(duì)修改代碼關(guān)閉。

(2)OCP的兩個(gè)特征:對(duì)于擴(kuò)展(增加)是開放的,因?yàn)樗挥绊懺瓉淼?,這是新增加的。對(duì)于修改是封閉的,如果總是修改,邏輯會(huì)越來越復(fù)雜。

小結(jié):開放封閉原則(OCP)是面向?qū)ο笤O(shè)計(jì)的核心思想。遵循這個(gè)原則可以為我們面向?qū)ο蟮脑O(shè)計(jì)帶來巨大的好處:可維護(hù)(維護(hù)成本小,做管理簡單,影響最?。?、可擴(kuò)展(有新需求,增加就好)、可復(fù)用(不耦合,可以使用以前代碼)、靈活性好(維護(hù)方便、簡單)。開發(fā)人員應(yīng)該僅對(duì)程序中出現(xiàn)頻繁變化的那些部分做出抽象,但是不能過激,對(duì)應(yīng)用程序中的每個(gè)部分都刻意地進(jìn)行抽象同樣也不是一個(gè)好主意。拒絕不成熟的抽象和抽象本身一樣重要。

里氏代換原則【LSP】:

里氏代換原則是面向?qū)ο笤O(shè)計(jì)的基本原則之一。里氏代換原則中說,任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。LSP 是繼承復(fù)用的基石,只有當(dāng)派生類可以替換掉基類,且軟件單位的功能不受到影響時(shí),基類才能真正被復(fù)用,而派生類也能夠在基類的基礎(chǔ)上增加新的行為。里氏代換原則是對(duì)開閉原則的補(bǔ)充。實(shí)現(xiàn)開閉原則的關(guān)鍵步驟就是抽象化,而基類與子類的繼承關(guān)系就是抽象化的具體實(shí)現(xiàn),所以里氏代換原則是對(duì)實(shí)現(xiàn)抽象化的具體步驟的規(guī)范。

(1)LSP(Liskov SubstitutionPrinciple)的定義:子類型必須能夠替換掉它們的父類型。更直白的說,LSP是實(shí)現(xiàn)面向接口編程的基礎(chǔ)。

小結(jié):任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn),所以我們可以實(shí)現(xiàn)面向接口編程。LSP是繼承復(fù)用的基石,只有當(dāng)子類可以替換掉基類,軟件的功能不受到影響時(shí),基類才能真正被復(fù)用,而子類也能夠在基類的基礎(chǔ)上增加新的行為。里氏代換原則是對(duì)“開-閉”原則的補(bǔ)充。實(shí)現(xiàn)“開-閉”原則的關(guān)鍵步驟就是抽象化。而基類與子類的繼承關(guān)系就是抽象化的具體實(shí)現(xiàn),所以里氏代換原則是對(duì)實(shí)現(xiàn)抽象化的具體步驟的規(guī)范。

依賴轉(zhuǎn)換原則【DIP】:

依賴轉(zhuǎn)換原則是開閉原則的基礎(chǔ),具體內(nèi)容:針對(duì)接口編程,依賴于抽象而不依賴于具體。

(1)DIP(Dependence InversionPrinciple)的定義:抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。簡單說就是,我們要針對(duì)接口編程,而不要針對(duì)實(shí)現(xiàn)編程。

(2)高層模塊不應(yīng)該依賴低層模塊,兩個(gè)都應(yīng)該依賴抽象,因?yàn)槌橄笫欠€(wěn)定的。抽象不應(yīng)該依賴具體和細(xì)節(jié),具體和細(xì)節(jié)應(yīng)該依賴抽象。

小結(jié):依賴倒置原則其實(shí)可以說是面向?qū)ο笤O(shè)計(jì)的標(biāo)志,如果在我們編碼的時(shí)候考慮的是面向接口編程,而不是簡單的功能實(shí)現(xiàn),體現(xiàn)了抽象的穩(wěn)定性,只有這樣才符合面向?qū)ο蟮脑O(shè)計(jì)。

接口隔離原則【ISP】:

接口隔離原則的意思是:使用多個(gè)隔離的接口,比使用單個(gè)接口要好。它還有另外一個(gè)意思是:降低類之間的耦合度。由此可見,其實(shí)設(shè)計(jì)模式就是從大型軟件架構(gòu)出發(fā)、便于升級(jí)和維護(hù)的軟件設(shè)計(jì)思想,它強(qiáng)調(diào)降低依賴,降低耦合。

(1)接口隔離原則(Interface Segregation Principle)指的是使用多個(gè)專門的接口比使用單一的總接口要好。也就是說不要讓一個(gè)單一的接口承擔(dān)過多的職責(zé),而應(yīng)把每個(gè)職責(zé)分離到多個(gè)專門的接口中,進(jìn)行接口分離。過于臃腫的接口是對(duì)接口的一種污染。

(2)使用多個(gè)專門的接口比使用單一的總接口要好。

(3)一個(gè)類對(duì)另外一個(gè)類的依賴性應(yīng)當(dāng)是建立在最小的接口上的。

(4)一個(gè)接口代表一個(gè)角色,不應(yīng)當(dāng)將不同的角色都交給一個(gè)接口。沒有關(guān)系的接口合并在一起,形成一個(gè)臃腫的大接口,這是對(duì)角色和接口的污染。

(5)“不應(yīng)該強(qiáng)迫客戶依賴于它們不用的方法。接口屬于客戶,不屬于它所在的類層次結(jié)構(gòu)。”這個(gè)說得很明白了,再通俗點(diǎn)說,不要強(qiáng)迫客戶使用它們不用的方法,如果強(qiáng)迫用戶使用它們不使用的方法,那么這些客戶就會(huì)面臨由于這些不使用的方法的改變所帶來的改變。

小結(jié):接口隔離原則(ISP)告訴我們,在做接口設(shè)計(jì)的時(shí)候,要盡量設(shè)計(jì)的接口功能單一,功能單一,使它變化的因素就少,這樣就更穩(wěn)定,其實(shí)這體現(xiàn)了高內(nèi)聚,低耦合的原則,這樣做也避免接口的污染。

迪米特法則【DP】:

迪米特法則,又稱最少知道原則(Demeter Principle)。最少知道原則是指:一個(gè)實(shí)體應(yīng)當(dāng)盡量少地與其他實(shí)體之間發(fā)生相互作用,使得系統(tǒng)功能模塊相對(duì)獨(dú)立。

小結(jié):組合/聚合復(fù)用原則可以使系統(tǒng)更加靈活,類與類之間的耦合度降低,一個(gè)類的變化對(duì)其他類造成的影響相對(duì)較少,因此一般首選使用組合/聚合來實(shí)現(xiàn)復(fù)用;其次才考慮繼承,在使用繼承時(shí),需要嚴(yán)格遵循里氏替換原則,有效使用繼承會(huì)有助于對(duì)問題的理解,降低復(fù)雜度,而濫用繼承反而會(huì)增加系統(tǒng)構(gòu)建和維護(hù)的難度以及系統(tǒng)的復(fù)雜度,因此需要慎重使用繼承復(fù)用。文章來源地址http://www.zghlxwxcb.cn/news/detail-673389.html

到了這里,關(guān)于【23種設(shè)計(jì)模式】設(shè)計(jì)模式綜述(開篇)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【設(shè)計(jì)模式】23中設(shè)計(jì)模式筆記

    【設(shè)計(jì)模式】23中設(shè)計(jì)模式筆記

    核心就是設(shè)計(jì)一個(gè) 部分 抽象類。 這個(gè)類具有少量具體的方法,和大量抽象的方法,具體的方法是為外界提供服務(wù)的點(diǎn),具體方法中定義了抽象方法的執(zhí)行序列 現(xiàn)在有一個(gè)對(duì)象A,希望A的a方法被修飾 實(shí)現(xiàn)思路: 將A抽象成抽象類O 裝飾器類D來繼承O,并聚合O 裝飾器類D的構(gòu)造

    2024年02月19日
    瀏覽(27)
  • 【23種設(shè)計(jì)模式】組合模式【?】

    【23種設(shè)計(jì)模式】組合模式【?】

    個(gè)人主頁 :金鱗踏雨 個(gè)人簡介 :大家好,我是 金鱗 ,一個(gè)初出茅廬的Java小白 目前狀況 :22屆普通本科畢業(yè)生,幾經(jīng)波折了,現(xiàn)在任職于一家國內(nèi)大型知名日化公司,從事Java開發(fā)工作 我的博客 :這里是CSDN,是我學(xué)習(xí)技術(shù),總結(jié)知識(shí)的地方。希望和各位大佬交流,共同進(jìn)

    2024年02月09日
    瀏覽(26)
  • 永不磨滅的設(shè)計(jì)模式(23種設(shè)計(jì)模式全集)

    永不磨滅的設(shè)計(jì)模式(23種設(shè)計(jì)模式全集)

    設(shè)計(jì)模式(Design Pattern)是前輩們對(duì)代碼開發(fā)經(jīng)驗(yàn)的總結(jié),是解決特定問題的一系列套路。它不是語法規(guī)定,而是一套用來提高代碼可復(fù)用性、可維護(hù)性、可讀性、穩(wěn)健性以及安全性的解決方案。 單一職責(zé)原則 里氏替換原則 依賴倒置原則 開閉原則 接口隔離原則 迪米特法則

    2024年02月08日
    瀏覽(23)
  • 設(shè)計(jì)模式(23)解釋器模式

    設(shè)計(jì)模式(23)解釋器模式

    一、介紹: 1、定義:解釋器(Interpreter)模式是一種對(duì)象的行為模式。給定一個(gè)語言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來解釋語言中的句子。 2、組成結(jié)構(gòu): (1)AbstractExpression(抽象表達(dá)式):約定解釋器的解釋操作,主要是一個(gè)interpret()方

    2024年02月06日
    瀏覽(99)
  • 【23種設(shè)計(jì)模式】原型模式(五)

    【23種設(shè)計(jì)模式】原型模式(五)

    在軟件系統(tǒng)中,當(dāng)創(chuàng)建一個(gè)類的實(shí)例的過程很昂貴或很復(fù)雜,并且我們需要?jiǎng)?chuàng)建多個(gè)這樣類的實(shí)例時(shí),如果我們用new操作符去創(chuàng)建這樣的類實(shí)例,這就會(huì)增加創(chuàng)建類的復(fù)雜度和創(chuàng)建過程與客戶代碼復(fù)雜的耦合度。如果采用工廠模式來創(chuàng)建這樣的實(shí)例對(duì)象的話,隨著產(chǎn)品類的不

    2024年02月10日
    瀏覽(20)
  • 【23種設(shè)計(jì)模式】橋接模式(七)

    【23種設(shè)計(jì)模式】橋接模式(七)

    【 橋接模式 】是【 結(jié)構(gòu)型 】設(shè)計(jì)模式的第二個(gè)模式,也有叫【橋模式】的,英文名稱: Bridge Pattern 。 大家第一次看到這個(gè)名稱會(huì)想到什么呢?我第一次看到這個(gè)模式根據(jù)名稱猜肯定是連接什么東西的。因?yàn)闃蛟谖覀儸F(xiàn)實(shí)生活中經(jīng)常是連接著A地和B地,再往后來發(fā)展,橋引

    2024年02月10日
    瀏覽(22)
  • 【23種設(shè)計(jì)模式】享元模式【?】

    個(gè)人主頁 :金鱗踏雨 個(gè)人簡介 :大家好,我是 金鱗 ,一個(gè)初出茅廬的Java小白 目前狀況 :22屆普通本科畢業(yè)生,幾經(jīng)波折了,現(xiàn)在任職于一家國內(nèi)大型知名日化公司,從事Java開發(fā)工作 我的博客 :這里是CSDN,是我學(xué)習(xí)技術(shù),總結(jié)知識(shí)的地方。希望和各位大佬交流,共同進(jìn)

    2024年02月09日
    瀏覽(28)
  • 【23種設(shè)計(jì)模式】組合模式(七)

    【23種設(shè)計(jì)模式】組合模式(七)

    組合模式 ,英文名稱是: Composite Pattern 。當(dāng)我們談到這個(gè)模式的時(shí)候,有一個(gè)物件和這個(gè)模式很像,也符合這個(gè)模式要表達(dá)的意思,那就是“俄羅斯套娃”?!岸砹_斯套娃”就是大的瓷器娃娃里面裝著一個(gè)小的瓷器娃娃,小的瓷器娃娃里面再裝著更小的瓷器娃娃,直到最后

    2024年02月09日
    瀏覽(23)
  • 【23種設(shè)計(jì)模式】裝飾器模式

    【23種設(shè)計(jì)模式】裝飾器模式

    個(gè)人主頁 :金鱗踏雨 個(gè)人簡介 :大家好,我是 金鱗 ,一個(gè)初出茅廬的Java小白 目前狀況 :22屆普通本科畢業(yè)生,幾經(jīng)波折了,現(xiàn)在任職于一家國內(nèi)大型知名日化公司,從事Java開發(fā)工作 我的博客 :這里是CSDN,是我學(xué)習(xí)技術(shù),總結(jié)知識(shí)的地方。希望和各位大佬交流,共同進(jìn)

    2024年02月07日
    瀏覽(24)
  • 【23種設(shè)計(jì)模式】外觀模式(十)

    【23種設(shè)計(jì)模式】外觀模式(十)

    外觀模式 ,英文名稱是: Facade Pattern 。我們先從名字上來理解一下“外觀模式”。我看到了“外觀”這個(gè)詞語,就想到了“外表”這個(gè)詞語,兩者有著很相近的意思。就拿談戀愛來說,“外表”很重要,如果第一眼看著很舒服、有眼緣,那就有交往下去的可能。如果長的“

    2024年02月08日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包