<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è)計模式之七大設(shè)計原則

          共 1641字,需瀏覽 4分鐘

           ·

          2024-04-11 11:40

          一、原則概述

          定義:在進行軟件系統(tǒng)設(shè)計時所要遵循的一些經(jīng)驗準(zhǔn)則,應(yīng)用該準(zhǔn)則的目的通常是為了避免某些經(jīng)常出現(xiàn)的設(shè)計缺陷。(百度百科) 目標(biāo):降低系統(tǒng)耦合度、提高代碼復(fù)用率、增強系統(tǒng)可靠性或使得系統(tǒng)易于維護。

          二、七大原則

          (一)單一職責(zé)原則(Single Responsibility Principle);

          一個類應(yīng)該有且僅有一種職責(zé),此外應(yīng)該只有一種原因讓他改變。

          不管是方法、類、類庫、解決方案或者是這一個項目都需要符合單一原則。一個方法,我只處理一個功能邏輯。一個類,我只實現(xiàn)一個業(yè)務(wù)或者場景。一個類庫,我的職責(zé)就是數(shù)據(jù)庫啊或者工廠或者前端或者幫助類一個解決方案,就是后臺系統(tǒng)就是后臺系統(tǒng),前臺就是前臺,或者定時服務(wù),或者接口。

          662ad4a1aec21e79889f21ab21be066a.webp

          (二)開閉原則(Open Closed Principle);

          對修改關(guān)閉,對擴展開放。開閉原則是其他五個原則的基礎(chǔ),可以簡單理解為:開閉是抽象類,其他五個是實現(xiàn),是指導(dǎo)設(shè)計的工具和方法。

          【示例】基礎(chǔ)需求:汽車可以跑起來。追加需求:卡車、賽車;

          aad20c95c80681bd3464d47a77703219.webp9f4d308b9e811f50224749256ce095d6.webp

          (三)里氏替換原則(Liskov Substitution Principle);

          任何出現(xiàn)父類的地方都可以用子類替換,而不影響程序正常運行。核心是“約定”,父類與子類的約定。里氏替換原則要求子類在進行設(shè)計的時候要遵守父類的一些行為約定。這里的行為約定包括:函數(shù)所要實現(xiàn)的功能,對輸入、輸出、異常的約定,甚至包括注釋中一些特殊說明等。

          097aad9b5c64c36c99a0428235248b9e.webp

          f93f0b839e033225b40d084d4919bf52.webp

          1fa37e680cef3595331651d38693fbf7.webp

          (四)迪米特法則(Law of Demeter);

          不要和陌生人說話(只與你的直接朋友通信)。迪米特法則又叫最少知道原則,即一個類對自己依賴的類知道的越少越好,對于依賴的類不管有多復(fù)雜,都盡量將邏輯封裝在類的內(nèi)部,對外除了提供public方法,不泄漏任何信息。

          f0e5c6bca28e14cd80d4087045bc66cc.webp

          e5127a6d630b9b5bfe41f241234d39a5.webp

          (五)接口隔離原則(Interface Segregation Principle);

          客戶端不應(yīng)該強行依賴它不需要的接口;類間的依賴關(guān)系應(yīng)該建立在最小的接口上。

          1、接口盡量小 2、接口高內(nèi)聚 3、接口設(shè)計的限度(完全按此原則會導(dǎo)致接口數(shù)量暴增)

          (六)依賴倒置原則(Dependence Inversion Principle)

          上層模塊不應(yīng)該依賴下層模塊,兩者應(yīng)依賴其抽象;抽象不應(yīng)該依賴細節(jié),細節(jié)應(yīng)該依賴抽象。依賴倒置的本質(zhì)是利用抽象解耦迫不得已的依賴,使得依賴的下層模塊的修改不會影響上層模塊 【示例】場景:人駕駛汽車

          7ae1fd91c2a4244b156bc9cc528e25f6.webp6905b145b03b6f95b5249bfe35128350.webp

          a219cc924d16cb5c21144feda824f97b.webp

          58a65e30f6edcd3aa334857e32eb2548.webp31db4ecef4e3b2afb8df137ece2c0d83.webp

          acc74f5938e0d9997451418edd39586d.webp

          (七)合成復(fù)用原則(Composite Reuse Principle,CRP)

          盡量先使用聚合、組合來實現(xiàn),之后再考慮使用繼承。降低耦合度,將接口或者抽象類以聚合或者組合的方式引入,可以任意的靈活的去實現(xiàn)對應(yīng)的子類。【示例】汽車按“動力源”劃分可分為汽油汽車、電動汽車等;按“顏色”劃分可分為白色汽車、黑色汽車和紅色汽車等。如果同時考慮這兩種分類,其組合就很多。

          c315b2d4a4d76ff209bff39dbf58dd9e.webp9f575245ee261de4c78ff091957833fc.webp

          三、總結(jié)

          (1)  單一職責(zé)原則:一個類或接口只承擔(dān)一個職責(zé)。

          (2)  開閉原則:對軟件實體的改動,最好用擴展而非修改的方式

          (3)  里氏替換原則:在繼承類時,務(wù)必重寫(override)父類中所有的方法,尤其需要注意父類的protected方法(它們往往是讓你重寫的),子類盡量不要暴露自己的public方法供外界調(diào)用。

          (4)  迪米特法則:盡量減少對象之間的交互,從而減小類之間的耦合。

          (5)  接口隔離原則:不要對外暴露沒有實際意義的接口。

          (6)  依賴倒置原則:高層模塊不應(yīng)該依賴于低層模塊,而應(yīng)該依賴于抽象。抽象不應(yīng)依賴于細節(jié),細節(jié)應(yīng)依賴于抽象。


          瀏覽 36
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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片久久久乱码 | 久久综合色气网站 | 大鸡巴插逼 | 亚洲AV无码秘 翔田 | 久久99精品久久久水蜜桃 |