1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        設(shè)計(jì)模式的分類和六大原則,掃盲!

        共 1806字,需瀏覽 4分鐘

         ·

        2021-11-20 06:32

        點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

        優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

        設(shè)計(jì)模式的分類

        總的來說,設(shè)計(jì)模式分位三大類:

        1. 創(chuàng)建型模式(5種)
          工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式

        2. 結(jié)構(gòu)型模式(7種)
          適配器模式、裝飾器模式、代理模式、外觀模式(門面模式)、橋接模式、組合模式、享元模式

        3. 行為型模式(11種)
          策略模式、模板方法模式、觀察者模式、迭代器模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪問者模式、中介者模式、解釋器模式

        六大原則

        總原則:開閉原則

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

        當(dāng)一個(gè)軟件實(shí)體需要擴(kuò)展的時(shí)候,不要去修改原有的代碼,而是去擴(kuò)展原有的代碼。
        開閉原則是最基礎(chǔ)的一個(gè)原則,六大原則都是開閉原則的具體形態(tài)。
        采用開閉原則的原因:

        1. 避免測(cè)試復(fù)雜化:
          通過擴(kuò)展實(shí)現(xiàn)變化,測(cè)試只需要對(duì)新增類進(jìn)行單元測(cè)試即可,只需要保證新類提供的方法正確就行。

        2. 提高代碼復(fù)用性:
          避免以后為了修改一個(gè)微小的缺陷或增加新功能,卻要在整個(gè)項(xiàng)目中到處查找相關(guān)的代碼逐一修改。

        3. 提高可維護(hù)性:
          開發(fā)新功能時(shí),擴(kuò)展一個(gè)類往往比修改一個(gè)類更容易。

        1. 單一職責(zé)原則

        定義:有且僅有一個(gè)原因引起類的變更

        優(yōu)點(diǎn):

        1. 類的復(fù)雜性降低

        2. 可讀性提高

        3. 易維護(hù)

        4. 修改類引起的風(fēng)險(xiǎn)降低

        臨界點(diǎn):

        1. 過度的劃分會(huì)使類劇增,增加系統(tǒng)的復(fù)雜度

        2. 里氏代換原則

        定義:所有引用基類的地方必須能透明地使用其子類的對(duì)象

        優(yōu)點(diǎn):

        1. 提高代碼的重用性

        2. 提高代碼的可拓展性

        3. 提高項(xiàng)目的開放性

        缺點(diǎn):

        1. 記成是入侵式的,只要繼承,就有父類的屬性和方法

        2. 降低代碼靈活性,子類多了父類的約束

        3. 增強(qiáng)耦合性,父類的常量/變量/方法改動(dòng)時(shí),必須考慮子類的修改

        四層含義:

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

        2. 子類中可以增加自己特有的方法。

        3. 當(dāng)子類的方法重載父類的方法時(shí),方法的前置條件(即方法的形參)要比父類方法的輸入?yún)?shù)更寬松。

        4. 當(dāng)子類的方法實(shí)現(xiàn)父類的抽象方法時(shí),方法的后置條件(即方法的返回值)要比父類更嚴(yán)格。

        3. 依賴倒轉(zhuǎn)原則

        定義:

        1. 高層模塊不應(yīng)該依賴低層模塊,兩者都要依賴其抽象(模塊間的依賴通過抽象產(chǎn)生,實(shí)現(xiàn)類不直接發(fā)生依賴)

        2. 抽象不應(yīng)該依賴細(xì)節(jié)(接口或者抽象類不依賴實(shí)現(xiàn)類)

        3. 細(xì)節(jié)可以依賴抽象(實(shí)現(xiàn)類依賴接口或抽象類)

        處理:

        1. 每個(gè)類盡量都有接口或者抽象類

        2. 變量的表面類型盡量是接口或者抽象類

        3. 任何類都不應(yīng)該從具體類派生

        4. 盡量不要復(fù)寫基類已實(shí)現(xiàn)的方法

        5. 結(jié)合里氏替換原則使用

        4. 依賴倒轉(zhuǎn)原則

        定義:客戶端不應(yīng)該依賴不需要的接口,類之間的依賴關(guān)系應(yīng)該建立在最小的接口上

        四層含義:

        1. 接口盡量小,不要出現(xiàn)臃腫的接口

        2. 接口要高內(nèi)聚

        3. 只提供訪問者需要的方法,每個(gè)接口中不存在子類用不到卻必須要實(shí)現(xiàn)的內(nèi)容,可以將接口拆分

        4. 接口設(shè)計(jì)限度:設(shè)計(jì)粒度越小系統(tǒng)越靈活,結(jié)構(gòu)會(huì)越復(fù)雜,可維護(hù)性降低

        處理:

        1. 一個(gè)接口只服務(wù)一個(gè)子模塊或者業(yè)務(wù)邏輯

        2. 盡量壓縮接口內(nèi)的方法,保證都是有用的,避免臃腫

        3. 已被污染的接口盡量去修改,若變更風(fēng)險(xiǎn)大,采用適配器模式轉(zhuǎn)化處理

        4. 深入了解業(yè)務(wù)邏輯

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

        定義:一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象有最小的了解(低耦合)

        含義:

        1. 方法盡量不引入類中不存在的對(duì)象

        2. 盡量不要暴露過多public方法和非晶態(tài)public變量,盡量?jī)?nèi)斂

        3. 如果一個(gè)方法放在本類中,既不增加類間的關(guān)系,也不對(duì)本類產(chǎn)生負(fù)面影響,就可放置在本類中

        總結(jié):

        核心觀念就是類間解耦,低耦合。其負(fù)面影響就是產(chǎn)生了大量的中轉(zhuǎn)或者跳轉(zhuǎn)類,導(dǎo)致系統(tǒng)復(fù)雜性提高,也為維護(hù)帶來了難度。需要反復(fù)權(quán)衡,既做到結(jié)構(gòu)清晰,又要高內(nèi)聚低耦合。
        如果一個(gè)類需要跳轉(zhuǎn)兩次以上才能訪問到另一個(gè)類,就需要想辦法重構(gòu)了。

        6. 合成復(fù)用原則

        定義:是在一個(gè)新的對(duì)象里面使用一些已有的對(duì)象,使其成為新對(duì)象的一部分。新對(duì)象通過委派達(dá)到復(fù)用已有功能的效果。

        優(yōu)點(diǎn):

        使用對(duì)象的合成/聚合將有助于保持每個(gè)類被封裝,并被集中在單個(gè)任務(wù)上。這樣類和集成層次會(huì)保持較小規(guī)模,并且不太可能增長(zhǎng)為不可控制的龐然大物

        缺點(diǎn):

        通過這種方式復(fù)用建造的系統(tǒng)會(huì)有較多的對(duì)象需要管理;為了能將多個(gè)不同的對(duì)象作為組合塊來使用,必須仔細(xì)地對(duì)接口進(jìn)行定義

        簡(jiǎn)單地說:盡量首先使用合成/聚合的方式,而不是使用繼承


        瀏覽 54
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            仙女棒坐着使用图片黄 | 欧美另类国产 | 国产妓女精品一区二区 | 91老熟 | 国产黄色大片在线观看 | 午夜精品一区二区三区在线成人 | 亚洲 丝袜 国产 精品 91 | 国产黄色视频在线观看免费 | 淫色综合一区 | 视频一区在线观看 |