耦合性什么意思
耦合性(xing)(xing),也(ye)叫耦合度(du),是對模(mo)塊間關聯程(cheng)度(du)的(de)(de)度(du)量。耦合的(de)(de)強弱取決于模(mo)塊間接口的(de)(de)復雜性(xing)(xing)、調用模(mo)塊的(de)(de)方式以及通(tong)過界面傳送數據的(de)(de)多(duo)少。
模塊間的耦合度是指模塊之間的依賴關系,包括控制關系、調用關系、數據傳遞關系。模塊間聯系越多,其耦合性越強,同時表明其獨立性越差(降低耦合性,可以提高其獨立性)。軟件設計中通常(chang)用耦合(he)度(du)(du)和內聚度(du)(du)作為衡量模(mo)塊(kuai)獨立程度(du)(du)的(de)(de)標準。劃分模(mo)塊(kuai)的(de)(de)一個準則就是高(gao)內聚低耦合(he)。
形象(xiang)的(de)(de)說,就(jiu)(jiu)是(shi)要將代碼寫的(de)(de)和主(zhu)(zhu)機的(de)(de)排(pai)線(xian)(xian)(xian)一(yi)樣(yang),低(di)耦合(he)的(de)(de)模(mo)(mo)塊好(hao)像(xiang)你看你主(zhu)(zhu)機排(pai)線(xian)(xian)(xian)中(zhong)的(de)(de)隨便一(yi)條就(jiu)(jiu)知道(dao)這條線(xian)(xian)(xian)是(shi)干啥一(yi)樣(yang)拔(ba)掉會(hui)不會(hui)影(ying)(ying)(ying)響其他(ta)(ta)排(pai)線(xian)(xian)(xian)的(de)(de)功(gong)(gong)能(neng)一(yi)樣(yang),低(di)耦合(he)的(de)(de)模(mo)(mo)塊就(jiu)(jiu)好(hao)比鼠(shu)標線(xian)(xian)(xian)一(yi)樣(yang)拔(ba)掉它只(zhi)影(ying)(ying)(ying)響它自(zi)身的(de)(de)鼠(shu)標功(gong)(gong)能(neng),高(gao)耦合(he)的(de)(de)模(mo)(mo)塊就(jiu)(jiu)好(hao)比主(zhu)(zhu)機電源線(xian)(xian)(xian)一(yi)拔(ba)掉不只(zhi)影(ying)(ying)(ying)響它自(zi)身的(de)(de)功(gong)(gong)能(neng)其他(ta)(ta)功(gong)(gong)能(neng)也被影(ying)(ying)(ying)響了。
耦合性和內聚性是什么意思
1、耦合性(塊間(jian)聯系(xi))
指軟件系(xi)統結構中(zhong)各模(mo)(mo)(mo)(mo)塊(kuai)間相互聯(lian)系(xi)緊(jin)密程度的一(yi)種度量。模(mo)(mo)(mo)(mo)塊(kuai)之間聯(lian)系(xi)越緊(jin)密,其耦(ou)合性(xing)就越強,模(mo)(mo)(mo)(mo)塊(kuai)的獨立(li)性(xing)則越差(cha)。模(mo)(mo)(mo)(mo)塊(kuai)間耦(ou)合高低(di)取(qu)決于(yu)模(mo)(mo)(mo)(mo)塊(kuai)間接口的復雜性(xing)、調用的方(fang)式及傳(chuan)遞(di)的信(xin)息(xi)。
2、內聚(ju)性(xing)(塊內聯系(xi))
指(zhi)模塊(kuai)(kuai)的功能(neng)強度的度量,即一個(ge)模塊(kuai)(kuai)內(nei)(nei)部各個(ge)元(yuan)素彼此結(jie)合的緊(jin)密程度的度量。若一個(ge)模塊(kuai)(kuai)內(nei)(nei)各元(yuan)素(語名之間、程序段(duan)之間)聯系(xi)的越緊(jin)密,則它的內(nei)(nei)聚性就(jiu)越高。
因(yin)此,現代程序(xu)講究高內(nei)聚低耦合(he),即將功能內(nei)聚在同一(yi)模塊(kuai),模塊(kuai)與(yu)模塊(kuai)間盡可(ke)能獨立,互相(xiang)依賴低。沒(mei)有絕對沒(mei)有耦合(he)的模塊(kuai)組,只(zhi)有盡量降低互相(xiang)之間的影響(xiang),使模塊(kuai)越獨立越好。
耦合性的七種類型
1、非直接耦合
如果兩個模(mo)塊(kuai)之(zhi)間(jian)沒有(you)直接(jie)關系,它們之(zhi)間(jian)的(de)聯系完(wan)全是通過主模(mo)塊(kuai)的(de)控制和調(diao)用來實現的(de),這(zhe)就是非(fei)直接(jie)耦合。這(zhe)種(zhong)耦合的(de)模(mo)塊(kuai)獨立性(xing)最強。
2、數據耦合
如果一(yi)個模塊訪問另一(yi)個模塊時(shi),彼此之間是通過數據(ju)(ju)(ju)參(can)數(不是控制(zhi)(zhi)參(can)數、公(gong)共數據(ju)(ju)(ju)結(jie)構或外部變量)來交(jiao)換輸入、輸出信息的,則稱這種耦合為數據(ju)(ju)(ju)耦合。由于限制(zhi)(zhi)了只通過參(can)數表傳(chuan)遞數據(ju)(ju)(ju),按數據(ju)(ju)(ju)耦合開發的程序(xu)界(jie)面簡單、安全可靠。因此,數據(ju)(ju)(ju)耦合是松散的耦合,模塊之間的獨立性(xing)比較強(qiang)。在軟件程序(xu)結(jie)構中至少(shao)必須有這類耦合。
3、標記耦合
如(ru)果(guo)一(yi)(yi)組(zu)模(mo)塊(kuai)(kuai)通(tong)過參數(shu)表傳遞記錄(lu)信息(xi),就(jiu)是標記耦(ou)(ou)合。事實上,這(zhe)組(zu)模(mo)塊(kuai)(kuai)共享了這(zhe)個(ge)記錄(lu),它(ta)是某(mou)一(yi)(yi)數(shu)據(ju)結(jie)構(gou)(gou)的(de)(de)子結(jie)構(gou)(gou),而不是簡(jian)單變量。這(zhe)要(yao)求這(zhe)些模(mo)塊(kuai)(kuai)都(dou)必須(xu)清(qing)楚該記錄(lu)的(de)(de)結(jie)構(gou)(gou),并按結(jie)構(gou)(gou)要(yao)求對此(ci)記錄(lu)進行(xing)操(cao)作。在(zai)(zai)設計中(zhong)應盡(jin)量避免這(zhe)種耦(ou)(ou)合,它(ta)使在(zai)(zai)數(shu)據(ju)結(jie)構(gou)(gou)上的(de)(de)操(cao)作復雜(za)化了。如(ru)果(guo)采取“信息(xi)隱蔽”的(de)(de)方法,把在(zai)(zai)數(shu)據(ju)結(jie)構(gou)(gou)上的(de)(de)操(cao)作全(quan)部(bu)集中(zhong)在(zai)(zai)一(yi)(yi)個(ge)模(mo)塊(kuai)(kuai)中(zhong),就(jiu)可以消(xiao)除這(zhe)種耦(ou)(ou)合。
4、控制耦合
如果一(yi)個(ge)模塊(kuai)(kuai)(kuai)通過傳(chuan)送(song)開關、標志、名字等控(kong)(kong)(kong)制(zhi)信息(xi),明顯地控(kong)(kong)(kong)制(zhi)選擇(ze)(ze)另一(yi)模塊(kuai)(kuai)(kuai)的功能,就是(shi)控(kong)(kong)(kong)制(zhi)耦合(he)。這(zhe)種耦合(he)的實(shi)質是(shi)在單一(yi)接(jie)口上選擇(ze)(ze)多功能模塊(kuai)(kuai)(kuai)中的某項功能。因此,對所控(kong)(kong)(kong)制(zhi)模塊(kuai)(kuai)(kuai)的任(ren)何(he)修改,都(dou)會影響控(kong)(kong)(kong)制(zhi)模塊(kuai)(kuai)(kuai)。另外,控(kong)(kong)(kong)制(zhi)耦合(he)也意味(wei)著控(kong)(kong)(kong)制(zhi)模塊(kuai)(kuai)(kuai)必須知道所控(kong)(kong)(kong)制(zhi)模塊(kuai)(kuai)(kuai)內部的一(yi)些邏輯關系,這(zhe)些都(dou)會降低模塊(kuai)(kuai)(kuai)的獨立性。
5、外部耦合
一(yi)(yi)組(zu)模塊都訪問同一(yi)(yi)全(quan)局簡單變(bian)量而不(bu)是同一(yi)(yi)全(quan)局數(shu)據結構(gou),而且不(bu)是通過參數(shu)表傳遞該全(quan)局變(bian)量的信息,則稱之為外部耦合。
6、公共耦合
若一組模塊都訪問同一個公共數據環境,則它們之間的耦合就稱為公共耦合。公共的互聯網數據(ju)環境(jing)可以是全局數據(ju)結構、共享的(de)通(tong)信(xin)區(qu)、內(nei)存的(de)公共覆蓋區(qu)等(deng)。
7、內容耦合
如(ru)果發生下列情形,兩個模塊(kuai)之間(jian)就發生了內容耦合(he)。
(1)一個模塊直(zhi)接訪問另一個模塊的內部數據。
(2)一個(ge)模塊不通(tong)過正常入口轉到另一模塊內部。
(3)兩個模塊有(you)一部分程序代碼重疊(die)(只可能出現(xian)在匯編語言中)。
(4)一個(ge)(ge)模(mo)塊有多個(ge)(ge)入口。