chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

圖解高內(nèi)聚與低耦合

馬哥Linux運維 ? 來源:博客園-大道方圓 ? 2023-03-08 17:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

模塊

模塊就是從邏輯上將系統(tǒng)分解為更細(xì)微的部分, 分而治之, 復(fù)雜問題拆解為若干簡單問題, 逐個解決.

耦合主要描述模塊之間的關(guān)系, 內(nèi)聚主要描述模塊內(nèi)部. 模塊的粒度可大可小, 可以是函數(shù), 類, 功能塊等等.

耦合

模塊之間存在依賴, 導(dǎo)致改動可能會互相影響, 關(guān)系越緊密, 耦合越強, 模塊獨立性越差.

比如模塊A直接操作了模塊B中數(shù)據(jù), 則視為強耦合, 若A只是通過數(shù)據(jù)與模塊B交互, 則視為弱耦合.

獨立的模塊便于擴展, 維護(hù), 寫單元測試, 如果模塊之間重重依賴, 會極大降低開發(fā)效率.

1a42c608-a2f7-11ed-bfe3-dac502259ad0.gif

內(nèi)聚

模塊內(nèi)部的元素, 關(guān)聯(lián)性越強, 則內(nèi)聚越高, 模塊單一性更強. 一個模塊應(yīng)當(dāng)盡可能獨立完成某個功能,

如果有各種場景需要被引入到當(dāng)前模塊, 代碼質(zhì)量將變得非常脆弱, 這種情況建議拆分為多個模塊.

低內(nèi)聚的模塊代碼, 不管是維護(hù), 擴展還是重構(gòu)都相當(dāng)麻煩, 難以下手.

1a580716-a2f7-11ed-bfe3-dac502259ad0.gif

接口設(shè)計原則

好的接口應(yīng)當(dāng)滿足設(shè)計模式六大原則, 很多設(shè)計模式, 框架都是基于高內(nèi)聚低耦合這個出發(fā)點的.

單一職責(zé)原則: 一個類只負(fù)責(zé)一個功能領(lǐng)域中的相應(yīng)職責(zé).

開閉原則: 一個軟件實體應(yīng)當(dāng)對擴展開放,對修改關(guān)閉.

里氏代換原則: 所有引用基類(父類)的地方必須能透明地使用其子類的對象.

依賴倒轉(zhuǎn)原則: 抽象不應(yīng)該依賴于細(xì)節(jié), 細(xì)節(jié)應(yīng)當(dāng)依賴于抽象. 換言之, 要針對接口編程, 而不是針對實現(xiàn)編程.

接口隔離原則: 使用多個專門的接口, 而不使用單一的總接口, 即客戶端不應(yīng)該依賴那些它不需要的接口.

迪米特法則: 一個軟件實體應(yīng)當(dāng)盡可能少地與其他實體發(fā)生相互作用, 例如外觀模式, 對外暴露統(tǒng)一接口.

舉幾個栗子

外觀模式

為系統(tǒng)中多個子系統(tǒng)提供一致的對外調(diào)用, 對客戶端隱藏子系統(tǒng)細(xì)節(jié), 降低其與子系統(tǒng)的耦合.

1a697604-a2f7-11ed-bfe3-dac502259ad0.png

橋接模式

JDBC中的把面向廠商的接口(Driver)和面向使用者的API(DriverManager)做了拆分隔離.

//開發(fā)者只需要關(guān)注JDBCAPI,無需關(guān)注不同數(shù)據(jù)庫Driver接口實現(xiàn)
Class.forName("com.mysql.jdbc.Driver");
Connectionconn=DriverManager.getConnection(url,username,password);

1adf5914-a2f7-11ed-bfe3-dac502259ad0.png

適配器模式

引入第三方庫(hibernate, log4j), 不應(yīng)該直接在代碼中繼承或者使用其實體類.

需要抽出上層統(tǒng)一接口, 然后增加實現(xiàn)類, 對外暴露接口.

//代碼與log4j強耦合,不推薦
org.apache.log4j.Logger.getRootLogger().info("info");
//底層可以隨意更換log框架
FRLoggerFactory.getLogger().info("info");

1b097ec4-a2f7-11ed-bfe3-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2822

    瀏覽量

    52820
  • 耦合
    +關(guān)注

    關(guān)注

    13

    文章

    605

    瀏覽量

    102556
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9451

    瀏覽量

    156185
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    2177

    瀏覽量

    66270
  • 內(nèi)聚
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    1385

原文標(biāo)題:圖解高內(nèi)聚與低耦合

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    使用C語言實現(xiàn)內(nèi)耦合

    編程時,我們講究的是內(nèi)耦合,在協(xié)同開發(fā)、代碼移植、維護(hù)等環(huán)節(jié)都起到很重要的作用。
    發(fā)表于 09-21 11:33 ?1356次閱讀

    如何實現(xiàn)代碼的內(nèi)、耦合

    大家在談到面向?qū)ο缶幊痰臅r候基本都是討論軟件的“內(nèi)、耦合”的特點,這6個字也是算是成為了大部分評判代碼質(zhì)量的一個標(biāo)準(zhǔn),所以很多小伙伴一
    發(fā)表于 10-13 08:57 ?1562次閱讀

    看懂C語言程序中的內(nèi)耦合

    中提倡的是內(nèi)耦合。所謂內(nèi)
    發(fā)表于 12-08 06:37

    淺析模塊化編程思路

    好久沒更新播客了,最新想寫些自己的編程方面想法。也就是些自己的想法,不一定準(zhǔn)確,在這希望能和大家分享下。相信大家在大學(xué)的時候都學(xué)過程序遵循的標(biāo)準(zhǔn)是“內(nèi)
    發(fā)表于 12-20 06:52

    如何去實現(xiàn)模塊設(shè)計中的內(nèi)耦合

    內(nèi)耦合分別是什么意思?有何作用?如何去實現(xiàn)模塊設(shè)計中的
    發(fā)表于 02-25 07:05

    怎么把硬件操作和APP軟件耦合起來?

    你們寫嵌入式都是怎么把硬件操作和APP軟件耦合起來的,怎樣達(dá)到內(nèi)耦合的效果
    發(fā)表于 11-06 07:57

    基于最優(yōu)投影的半監(jiān)督類算法

    (semi-su-pervised spectral clustering based on the optimal projection,SSOP)。該算法從高內(nèi)耦合
    發(fā)表于 01-14 11:54 ?0次下載

    寬帶頻率范圍內(nèi)的定向和雙向耦合

    MCLI在無源元件方面的專業(yè)知識還擴展到寬帶頻率范圍內(nèi)的定向和雙向耦合器,具有插入損耗、指向性和駐波比的特點。MCLI所有定向
    發(fā)表于 11-10 10:24 ?1384次閱讀

    C語言中的內(nèi)耦合講解

    編程時,我們講究的是內(nèi)耦合,在協(xié)同開發(fā)、代碼移植、維護(hù)等環(huán)節(jié)都起到很重要的作用。 一、原理篇而
    的頭像 發(fā)表于 08-16 14:06 ?2666次閱讀

    C語言--“內(nèi),耦合”編程思想

    1、定義內(nèi)耦合,是軟件工程中的概念,是判斷設(shè)計好壞的標(biāo)準(zhǔn),主要是面向?qū)ο蟮脑O(shè)計,主要是看類的內(nèi)聚性是否
    發(fā)表于 01-13 13:43 ?3次下載
    C語言--“<b class='flag-5'>高</b><b class='flag-5'>內(nèi)</b><b class='flag-5'>聚</b>,<b class='flag-5'>低</b><b class='flag-5'>耦合</b>”編程思想

    很強大!耦合內(nèi)的MCU實用軟件框架

    一個模塊內(nèi)部各個元素之間的聯(lián)系的緊密程度,如果各個元素(語句、程序段)之間的聯(lián)系程度越高,則內(nèi)聚性越高,也就是內(nèi)。
    發(fā)表于 02-08 15:56 ?3次下載
    很強大!<b class='flag-5'>低</b><b class='flag-5'>耦合</b><b class='flag-5'>高</b><b class='flag-5'>內(nèi)</b><b class='flag-5'>聚</b>的MCU實用軟件框架

    手把手帶小白做MODBUS通訊實驗

    我們做程序庫封裝的基本要義是內(nèi)耦合, 而評價低耦合的終極體現(xiàn)則是使用實現(xiàn)過程的優(yōu)雅程度。
    的頭像 發(fā)表于 08-06 17:05 ?2245次閱讀
    手把手帶小白做MODBUS通訊實驗

    電路耦合效應(yīng)分析 耦合好還是

    電路耦合效應(yīng)分析 耦合好還是好 電路耦合效應(yīng)是指兩個或更多電路之間存在的相互影響的現(xiàn)象。在電路中,一個信號的變化可能會引起另一個信號的
    的頭像 發(fā)表于 09-22 12:47 ?6175次閱讀

    編程如何做到內(nèi)耦合呢?

    耦合,是指模塊之間盡可能的使其獨立存在,模塊之間不產(chǎn)生聯(lián)系不可能,但模塊與模塊之間的接口應(yīng)該盡量少而簡單。
    的頭像 發(fā)表于 12-06 09:20 ?1721次閱讀

    Java 枚舉與策略模式、函數(shù)式接口的結(jié)合:實現(xiàn)內(nèi)耦合的設(shè)計

    中,通常會使用枚舉來定義業(yè)務(wù)上的一組常量,那除了簡單地定義常量之外,我們?nèi)绾卫妹杜e來實現(xiàn)內(nèi)、耦合的設(shè)計呢?下面介紹下枚舉和策略模式、
    的頭像 發(fā)表于 11-21 14:06 ?897次閱讀