<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 1806字,需瀏覽 4分鐘

           ·

          2021-11-20 06:32

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

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

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

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

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

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

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

          六大原則

          總原則:開(kāi)閉原則

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

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

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

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

          3. 提高可維護(hù)性:
            開(kāi)發(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. 過(guò)度的劃分會(huì)使類劇增,增加系統(tǒng)的復(fù)雜度

          2. 里氏代換原則

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

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

          1. 提高代碼的重用性

          2. 提高代碼的可拓展性

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

          缺點(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)該依賴低層模塊,兩者都要依賴其抽象(模塊間的依賴通過(guò)抽象產(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. 只提供訪問(wèn)者需要的方法,每個(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. 盡量不要暴露過(guò)多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ù)帶來(lái)了難度。需要反復(fù)權(quán)衡,既做到結(jié)構(gòu)清晰,又要高內(nèi)聚低耦合。
          如果一個(gè)類需要跳轉(zhuǎn)兩次以上才能訪問(wèn)到另一個(gè)類,就需要想辦法重構(gòu)了。

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

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

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

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

          缺點(diǎn):

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

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


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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美少妇一区二区 | a免费视频在线观看 | 蜜桃精品视频在线观看 | 久,操电影网 | 日韩一极片 |