91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

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

掃碼添加小助手

加入工程師交流群

模塊

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

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

耦合

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

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

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

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

內(nèi)聚

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

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

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

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

接口設計原則

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

單一職責原則: 一個類只負責一個功能領域中的相應職責.

開閉原則: 一個軟件實體應當對擴展開放,對修改關閉.

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

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

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

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

舉幾個栗子

外觀模式

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

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

橋接模式

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

//開發(fā)者只需要關注JDBCAPI,無需關注不同數(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), 不應該直接在代碼中繼承或者使用其實體類.

需要抽出上層統(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)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2837

    瀏覽量

    53300
  • 耦合
    +關注

    關注

    13

    文章

    607

    瀏覽量

    103538
  • 接口
    +關注

    關注

    33

    文章

    9523

    瀏覽量

    157060
  • API
    API
    +關注

    關注

    2

    文章

    2374

    瀏覽量

    66802
  • 內(nèi)聚
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1389

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

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

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

    淺析模塊化編程思路

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

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

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

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

    你們寫嵌入式都是怎么把硬件操作和APP軟件耦合起來的,怎樣達到內(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 ?1466次閱讀

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

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

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

    1、定義內(nèi)耦合,是軟件工程中的概念,是判斷設計好壞的標準,主要是面向?qū)ο蟮脑O計,主要是看類的內(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 ?2380次閱讀
    手把手帶小白做MODBUS通訊實驗

    電路耦合效應分析 耦合好還是

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

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

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

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

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