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è)計模式之七大設(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
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        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久久88香蕉国产 | 嗯啊这个姿势好深轻点 | 亚洲无码在线免费观看 | 亚洲人妻三级 | 色五月婷婷色五月 | 狠狠操大香蕉人人操 | 一级婬片A片AAA毛片喷水漫画 | free性vidos呻吟4k free性粗暴哭泣性hd |