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