RM新时代官方网站

詳解業(yè)務(wù)系統(tǒng)高內(nèi)聚,低耦合,值得收藏(簡述高內(nèi)聚低耦合的含義)

概述

今天跟領(lǐng)導(dǎo)交流時(shí)談了一下業(yè)務(wù)解耦的一些內(nèi)容,而其中就談到了為什么需要解耦?回答這個(gè)問題,我們必須得知道什么是解耦。相信大多數(shù)朋友都在軟件工程中聽過這樣一句話 —— “高內(nèi)聚,低耦合”。那么什么是 “高內(nèi)聚”,什么是 “低耦合”呢?下面區(qū)分介紹一下。


01

什么是內(nèi)聚

內(nèi)聚,從字面上來看有聚精會(huì)神、聚在一起的意思,那么 高內(nèi)聚也就是盡可能的使一個(gè)模塊或一個(gè)類再或者是一個(gè)方法只專注做好一件事。

在設(shè)計(jì)軟件的時(shí)候一定要采取【多聚合、少繼承】的基本原則,因?yàn)槭褂?“聚合” 的這種方式能夠使業(yè)務(wù)邏輯更加清晰,更有利于我們后期的擴(kuò)展和維護(hù)。

詳解業(yè)務(wù)系統(tǒng)高內(nèi)聚,低耦合,值得收藏(簡述高內(nèi)聚低耦合的含義)

例如訂單模塊,一般情況下,下單模塊都會(huì)有如下的信息,訂單的信息,產(chǎn)品的信息及誰下的單(買家信息)。這是基本的,那么設(shè)計(jì)的時(shí)候就要把相關(guān)的功能內(nèi)聚到一起。當(dāng)然這是從大功能(下單管理)上來說,當(dāng)然這些模塊還可以再細(xì)化分成產(chǎn)品、訂單、會(huì)員等子模塊。


02

耦合

耦合,從字面上來看有藕斷絲連的意思,“耦” 這個(gè)字在中國漢語里指的是兩個(gè)人在一起耕地,他倆各干各的互不影響,這也是“耦合”的由來。

那么 低耦合也就是盡可能的使每個(gè)模塊之間或者每個(gè)類之間再或者是每個(gè)方法之間的關(guān)聯(lián)關(guān)系減少,這樣可以使各自盡可能的獨(dú)立,一個(gè)地方出錯(cuò),不會(huì)影響全部,更能提高代碼的重用性。

詳解業(yè)務(wù)系統(tǒng)高內(nèi)聚,低耦合,值得收藏(簡述高內(nèi)聚低耦合的含義)

所以在設(shè)計(jì)軟件的時(shí)候也一定要注意各模塊之間一定盡可能的減少聯(lián)系,防止一個(gè)模塊出現(xiàn)的問題影響到其他模塊。

詳解業(yè)務(wù)系統(tǒng)高內(nèi)聚,低耦合,值得收藏(簡述高內(nèi)聚低耦合的含義)


03

使用高內(nèi)聚,低耦合的好處

1、生活中的 “高內(nèi)聚,低耦合”

軍隊(duì)的存在是為了保家衛(wèi)國,我們國家的軍隊(duì)分為海軍、陸軍、空軍等部隊(duì),他們各自的職責(zé)是不一樣的。海軍負(fù)責(zé)海上作戰(zhàn),陸軍負(fù)責(zé)陸地作戰(zhàn),空軍負(fù)責(zé)空中作戰(zhàn),他們之間的聯(lián)系很少。

我們可以想想為什么要這樣安排呢?如果我們國家的軍隊(duì)不分的那么細(xì),每支部隊(duì)都有在海上、陸地、空中作戰(zhàn)的士兵,如果我們和日本在海上大戰(zhàn),我們還需要從各個(gè)部隊(duì)中抽取能夠在海上作戰(zhàn)的士兵,再組成一支海上抗日軍這樣的部隊(duì),抽取出來的士兵的戰(zhàn)斗力各有不一,還需要一個(gè)適應(yīng)的過程,我們想想這支一盤散沙的部隊(duì)能取得勝利嘛?

打仗在于兵貴神速,這樣的一支部隊(duì)還是一盤散沙呢,怎么能做到兵貴神速呢?那么我們可以早早的就把他們分為海軍、陸軍、空軍,海軍就負(fù)責(zé)在海上作戰(zhàn),陸軍就負(fù)責(zé)在陸地作戰(zhàn),空軍就負(fù)責(zé)在空中作戰(zhàn),我們?nèi)绻腿毡具M(jìn)行海上大戰(zhàn),我們直接派海軍過去不就可以了嘛?

根據(jù)我們剛才的分析,證明了軍隊(duì)分為海軍、陸軍、空軍的好處,那么我們?cè)傧胂?,他們之間的聯(lián)系為什么會(huì)很少呢?咱們還是假設(shè)一下,如果每個(gè)部隊(duì)總是依賴其他幾個(gè)部隊(duì),不會(huì)獨(dú)立戰(zhàn)斗,那么如果某一天海軍被派出去執(zhí)行任務(wù),美國這個(gè)時(shí)候空軍來襲,我們的空軍難道要等海軍回來再戰(zhàn)斗嘛?如果那樣的話為時(shí)晚矣。所以他們之間應(yīng)該獨(dú)立作戰(zhàn),互相依賴的情況應(yīng)該要減少。

這就是生活中的 “高內(nèi)聚,低耦合” 的例子。類似這樣的例子還有很多,只要我們留心觀察就能發(fā)現(xiàn)。

2、Java中的 “高內(nèi)聚,低耦合”

耦合放到Java里面就是兩個(gè)類之間的聯(lián)系的緊密程度,看下面這段代碼:

public class A { public void say() { System.out.println(\”I am A\”); }}public class B { public void put(A a) { a.say(); }}

從上面這個(gè)例子中我們可以看出來,A類 和 B類 之間存在一種很強(qiáng)的一個(gè)聯(lián)系,我們把這種聯(lián)系稱為強(qiáng)耦合關(guān)系,B類的 put方法 參數(shù)必須是 A類類型,不可以是 非A類類型。

當(dāng)然了,既然有強(qiáng)耦合關(guān)系當(dāng)然也存在所謂的弱耦合關(guān)系,弱耦合也就是我們俗說的低耦合。那么請(qǐng)看下面這段代碼:

public interface IBase { void say();}public class A implements IBase { @Override public void say() { System.out.println(\”I am A\”); }}public class B implements IBase { @Override public void say() { System.out.println(\”I am B\”); }}public class C { public void put(IBase base) { base.say(); }}

上面這段代碼中 C類 與 A類、B類之間就存在一種弱耦合關(guān)系,C類 的 put方法 的參數(shù)可以是 A類類型 也可以是 B類類型,不像強(qiáng)耦合關(guān)系中必須是 A類類型 其他類型皆不可的情形。

我們實(shí)現(xiàn)低耦合就是對(duì)兩類之間進(jìn)行解耦,解除類之間的直接關(guān)系,將直接關(guān)系轉(zhuǎn)換成間接關(guān)系,和上面代碼一樣,這種思想利用了多態(tài)的思想,不過一般情況都是使用接口的方式來實(shí)現(xiàn)解耦的。通常情況下我們?cè)谙到y(tǒng)分離時(shí)只是以接口的方式提供服務(wù),供其他的模塊進(jìn)行使用。在模塊內(nèi)部有大量的信息是不要向外部暴露的,所以模塊在設(shè)計(jì)時(shí)訪問域的定義就要?jiǎng)澐趾茫乐挂驗(yàn)樵L問域的定義而對(duì)模塊的信息造成破壞。


“高內(nèi)聚,低耦合”,用一句話概括就是寫的代碼盡可能專一的完成一個(gè)任務(wù),且各段代碼盡量模塊化互相獨(dú)立??赡艽蠹矣X得這只是開發(fā)要懂的內(nèi)容,但如果運(yùn)維想深入的話這個(gè)也是繞不過去的,理解了才能更好的去設(shè)計(jì)一個(gè)系統(tǒng),保證系統(tǒng)高效穩(wěn)定。后面會(huì)分享更多devops和DBA方面的內(nèi)容,感興趣的朋友可以關(guān)注一下~

詳解業(yè)務(wù)系統(tǒng)高內(nèi)聚,低耦合,值得收藏(簡述高內(nèi)聚低耦合的含義)

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。

(0)
上一篇 2024年5月16日 下午3:09
下一篇 2024年5月16日 下午3:20

相關(guān)推薦

  • 敏敏科研項(xiàng)目

    敏敏科研項(xiàng)目:探索人類基因編輯技術(shù)的未來 近年來,基因編輯技術(shù)一直在科學(xué)家們的不斷努力下取得了巨大的進(jìn)展。這種技術(shù)可以用來修改人類基因組,使人類變得更加健康,強(qiáng)壯和長壽。但是,這種…

    科研百科 2025年2月10日
    7
  • 軟件項(xiàng)目管理項(xiàng)目經(jīng)理

    軟件項(xiàng)目管理項(xiàng)目經(jīng)理:如何確保項(xiàng)目成功交付 軟件項(xiàng)目管理在現(xiàn)代軟件開發(fā)中扮演著至關(guān)重要的角色。作為項(xiàng)目經(jīng)理,我們需要確保項(xiàng)目按時(shí)、按質(zhì)量、按預(yù)算完成,并滿足客戶需求。本文將介紹一些…

    科研百科 2024年8月22日
    5
  • 華為研發(fā)項(xiàng)目管理方法RDPM讀后感

    華為研發(fā)項(xiàng)目管理方法RDPM讀后感華為研發(fā)項(xiàng)目管理方法RDPM讀后感(華為發(fā)明的功效)華為 No.15 公司發(fā)布的《公司內(nèi)部管理辦法》的第一手游說讓《華為公司內(nèi)部管理辦法》的員工驚…

    科研百科 2024年11月20日
    5
  • 土木工程施工項(xiàng)目管理

    土木工程施工項(xiàng)目管理 土木工程施工項(xiàng)目管理是指在土木工程建設(shè)中,通過合理的規(guī)劃和組織,將建筑、道路、橋梁、隧道、水利工程等各個(gè)工程 components completed 并符合…

    科研百科 2024年9月21日
    3
  • smartlaiAPP下載

    下載SmartlaiAPP,體驗(yàn)智能生活 近年來,隨著人工智能技術(shù)的不斷發(fā)展,智能生活已經(jīng)成為人們生活中不可或缺的一部分。而SmartlaiAPP,則是其中最具代表性的一款智能應(yīng)用…

    科研百科 2024年11月6日
    4
  • 本科直博科研項(xiàng)目

    本科直博科研項(xiàng)目 近年來,隨著高等教育的快速發(fā)展,越來越多的學(xué)生選擇直接攻讀博士學(xué)位。對(duì)于那些想要進(jìn)一步深入研究自己感興趣的領(lǐng)域的人來說,直博項(xiàng)目是一個(gè)不錯(cuò)的選擇。本文將探討本科直…

    科研百科 2025年2月26日
    7
  • 速戳!市住房城鄉(xiāng)建設(shè)管理委2023年度科研項(xiàng)目計(jì)劃發(fā)布→

    為進(jìn)一步提升住建行業(yè)科技創(chuàng)新能力,持續(xù)激發(fā)創(chuàng)新活力,市住房城鄉(xiāng)建設(shè)管理委結(jié)合本市住建領(lǐng)域科技發(fā)展實(shí)際,重點(diǎn)圍繞城市更新、數(shù)字化轉(zhuǎn)型、綠色低碳、安全韌性等方面,形成《上海市住房和城鄉(xiāng)…

    科研百科 2023年10月8日
    202
  • 項(xiàng)目管理工具包

    項(xiàng)目管理工具包 項(xiàng)目管理是組織管理中非常重要的一環(huán)。通過使用項(xiàng)目管理工具包,可以更高效地管理項(xiàng)目,確保項(xiàng)目能夠按時(shí)完成,并在預(yù)算范圍內(nèi)完成。 項(xiàng)目管理工具包通常包括一些用于項(xiàng)目計(jì)劃…

    科研百科 2024年7月28日
    1
  • 工程項(xiàng)目管理下載

    工程項(xiàng)目管理下載 工程項(xiàng)目管理下載是一種能夠幫助人們高效地管理工程項(xiàng)目的軟件。無論是建筑項(xiàng)目, 工程維護(hù)還是其他類型的項(xiàng)目,下載工程項(xiàng)目管理軟件都能夠提高項(xiàng)目的效率和質(zhì)量。 工程項(xiàng)…

    科研百科 2024年9月22日
    2
  • 企業(yè)合同管理制度創(chuàng)新初探(企業(yè)合同管理制度創(chuàng)新初探論文)

    文章來源網(wǎng)絡(luò) 作者:林清達(dá) 摘要:合同是企業(yè)與外部進(jìn)行物流、資金流、信息流交換的基本形式。當(dāng)前我國市場規(guī)則和秩序還不很規(guī)范,合同極易被不法分子利用,進(jìn)行各種違法犯罪活動(dòng),企業(yè)就可能…

    2022年8月8日
    552
RM新时代官方网站