耦合的定义
---------------------------個(gè)人的一些粗淺的認(rèn)識------------------
?
耦合就是多個(gè)元件之間互相影響。
?
例如一個(gè)仿人機(jī)器人的胳膊,向前伸胳膊時(shí)就不能往胸前靠(達(dá)不到電機(jī)的極大值),因?yàn)樾厍坝幸粋€(gè)硬殼膈應(yīng)著,如果向后就可以多運(yùn)動10度,那么機(jī)器人前后的自由度和左右的自由度就是耦合的,兩者是相互影響的。
?
例如在做SLAM時(shí),定位和地圖繪制就是一個(gè)互相耦合的對象。如果沒有一個(gè)粗略的地圖根本就無法去定位,但如果沒有一個(gè)運(yùn)動攝像頭的實(shí)時(shí)不斷“定位”也不可能可以繪制出一張“地圖”。
?
現(xiàn)在遇到的耦合大概就這兩個(gè)吧,感覺是在很多領(lǐng)域都會有應(yīng)用場景的詞,先碼一下提升下逼格。
?
------------------------------度娘的解釋---------------------------------------
耦合是指兩個(gè)或兩個(gè)以上的電路元件或電網(wǎng)絡(luò)等的輸入與輸出之間存在緊密配合與相互影響,并通過相互作用從一側(cè)向另一側(cè)傳輸能量的現(xiàn)象。
耦合作為名詞在通信工程、軟件工程、機(jī)械工程等工程中都有相關(guān)名詞術(shù)語。
?
簡單地說,軟件工程中對象之間的耦合度就是對象之間的依賴性。指導(dǎo)使用和維護(hù)對象的主要問題是對象之間的多重依賴性。對象之間的耦合越高,維護(hù)成本越高。因此對象的設(shè)計(jì)應(yīng)使類和構(gòu)件之間的耦合最小。
有軟硬件之間的耦合,還有軟件各模塊之間的耦合。
耦合性是程序結(jié)構(gòu)中各個(gè)模塊之間相互關(guān)聯(lián)的度量。它取決于各個(gè)模塊之間的接口的復(fù)雜程度、調(diào)用模塊的方式以及哪些信息通過接口。
耦合可以分為以下幾種,它們之間的耦合度由高到低排列如下:
(1)內(nèi)容耦合。當(dāng)一個(gè)模塊直接修改或操作另一個(gè)模塊的數(shù)據(jù)時(shí),或一個(gè)模塊不通過正常入口而轉(zhuǎn)入另一個(gè)模塊時(shí),這樣的耦合被稱為內(nèi)容耦合。內(nèi)容耦合是最高程度的耦合,應(yīng)該避免使用之。
(2)公共耦合。兩個(gè)或兩個(gè)以上的模塊共同引用一個(gè)全局?jǐn)?shù)據(jù)項(xiàng),這種耦合被稱為公共耦合。在具有大量公共耦合的結(jié)構(gòu)中,確定究竟是哪個(gè)模塊給全局變量賦了一個(gè)特定的值是十分困難的。
(3)外部耦合。一組模塊都訪問同一全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。
(4)控制耦合。一個(gè)模塊通過接口向另一個(gè)模塊傳遞一個(gè)控制信號,接受信號的模塊根據(jù)信號值而進(jìn)行適當(dāng)?shù)膭幼?#xff0c;這種耦合被稱為控制耦合。
(5)標(biāo)記耦合。若一個(gè)模塊A通過接口向兩個(gè)模塊B和C傳遞一個(gè)公共參數(shù),那么稱模塊B和C之間存在一個(gè)標(biāo)記耦合。
(6)數(shù)據(jù)耦合。模塊之間通過參數(shù)來傳遞數(shù)據(jù),那么被稱為數(shù)據(jù)耦合。數(shù)據(jù)耦合是最低的一種耦合形式,系統(tǒng)中一般都存在這種類型的耦合,因?yàn)闉榱送瓿梢恍┯幸饬x的功能,往往需要將某些模塊的輸出數(shù)據(jù)作為另一些模塊的輸入數(shù)據(jù)。
(7)非直接耦合。兩個(gè)模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實(shí)現(xiàn)的。
總結(jié):耦合是影響軟件復(fù)雜程度和設(shè)計(jì)質(zhì)量的一個(gè)重要因素,在設(shè)計(jì)上我們應(yīng)采用以下原則:如果模塊間必須存在耦合,就盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,盡量避免使用內(nèi)容耦合。
?
?
多學(xué)習(xí)提升逼格,233
總結(jié)