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