Java中的松耦合與緊耦合:松耦合和緊耦合之間的區別
已發表: 2021-05-02目錄
介紹
Java 是一種使用類和對象的面向對象的編程語言。 如果您使用 Java 語言中的類和對象,則耦合在 Java 中起著至關重要的作用。 耦合是指 Java 中一個元素對另一個元素的了解程度。 它是一個類被另一個類使用的程度。 本文將通過示例讓您深入了解Java中的耦合及其類型。
Java中的耦合是什麼?
耦合只不過是一個類對另一個類的依賴。 如果代碼中的一個對象使用程序中的另一個對象,則在 Java 中稱為鬆散耦合。 在耦合中,兩個類或對象相互協作並協同工作以完成預定義的任務。 它只是意味著一個元素需要另一個元素來完成一個功能。 當一個類調用另一個類的邏輯時,稱為協作。
聯軸器有哪些類型?
Java 中的耦合有兩種類型。
Java 中的鬆散耦合
當兩個類、模塊或組件相互依賴程度較低時,在 Java 中稱為鬆散耦合。 Java 中的鬆散耦合意味著類是相互獨立的。 一個類對另一個類的唯一了解是另一個類通過鬆散耦合的接口公開的內容。 如果一種情況需要從外部使用對象,則稱為鬆散耦合情況。
在這裡,父對像很少使用對象,並且可以很容易地從外部源更改對象。 Java中的鬆散耦合比緊耦合具有優勢,因為它減少了代碼維護和工作量。 一個類的變化不需要另一個類的變化,兩個類可以獨立工作。
示例 1:假設您在程序中創建了兩個類 A 和 B。 A類稱為體積,B類評估圓柱體的體積。 如果您更改 A 類卷,那麼您不會被迫更改 B 類。這在 Java 中稱為鬆散耦合。 當 A 類需要 B 類中的更改時,您將具有緊密耦合。
代碼
封裝松耦合; 類卷{ 公共靜態無效主要(字符串參數[]){ 氣缸 b = 新氣缸 (25, 25, 25); System.out.println(b.getVolume()); } } 最後一類氣缸{ 私人 int 卷; 圓柱體(整數長度,整數寬度,整數高度){ this.volume = 長 * 寬 * 高; } 公共 int getVolume() { 返回量; } } |
解釋:在上面的例子中,A 類和 B 類是松耦合的。
示例 2
導入 java.io.IOException; 界麵食物{ 公共無效顯示(); } 意大利語類{ 食品; 公共意大利語(食品){ 這.s = s; } 公共無效顯示(){ System.out.println(“意大利語”); s.display(); } } 中文類實現食品{ 公共中文(){} 公共無效顯示(){ System.out.println(“中文”); } } 類墨西哥實施食品{ 公共墨西哥(){} 公共無效顯示(){ System.out.println(“墨西哥”); } } 公共類測試{ 公共靜態 void main(String args[]) 拋出 IOException { 食物 b = new Chinese(); 食物 c = new Mexican(); 意大利語 a = 新意大利語(b); //a.display() 將打印意大利語和中文 a.顯示(); 意大利語 a1 = 新意大利語(c); //a.display() 將打印意大利語和墨西哥語 a1.display(); } } |
輸出
意大利語 中國人 意大利語 墨西哥人 |
解釋:在上面的例子中,所有三個類都是松耦合的。 它只是意味著您可以使用 food 接口通過注入任何已實現的服務來提供服務。
從世界頂級大學在線獲得軟件工程學位。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
緊耦合
當兩個類相互高度依賴時,稱為緊耦合。 當一個類承擔太多責任或一個類的更改需要另一個類的更改時,就會發生這種情況。 在緊密耦合中,一個對象(父對象)創建另一個對象(子對象)供其使用。 如果父對象更了解子對像是如何實現的,我們可以說父對象和子對像是緊密耦合的。
示例:假設您在程序中創建了兩個類 A 和 B。 A類稱為體積,B類評估圓柱體的體積。 如果您對捲進行任何更改,那麼相同的更改將反映在 B 類中。因此,我們可以說這兩個類相互高度依賴並且緊密耦合。
代碼
封裝緊耦合; 類卷{ 公共靜態無效主要(字符串參數[]){ 氣缸 b = 新氣缸 (15, 15, 15); System.out.println(b.volume); }} 類氣缸{ 公共 int 卷; 圓柱體(整數長度,整數寬度,整數高度){ this.volume = 長 * 寬 * 高; }} |
輸出
3375 |
解釋:在上面的例子中,A 類和 B 類綁定在一起,作為一個團隊相互協作。
松耦合和緊耦合之間的差異
下表列出了松耦合和緊耦合之間的區別。
松耦合 | 緊耦合 |
對像是相互獨立的。 | 一個對象依賴於另一個對象來完成一項任務。 |
更好的可測試性 | 可測試性不如Java 中的鬆散耦合。 |
異步通信 | 同步通信 |
少協調。 在兩個類之間交換代碼並不容易。 | 提供更好的協調。 您可以輕鬆地在兩個對象之間交換代碼。 |
沒有接口的概念 | 遵循 GOF 原則進行接口 |
信息流少 | 更多信息流 |
多變 | 它不具備更改能力。 |
結論
簡而言之,與緊耦合相比,Java中的鬆散耦合要好得多。 它提供了更好的代碼靈活性和可重用性。 由於這兩個類相互獨立,因此代碼的更改非常容易。 它還提供了更好的可測試性。
如果您有興趣了解有關軟件開發的更多信息,請查看 LJMU 的計算機科學理學碩士課程,該碩士課程專為在職專業人士設計,並提供 12 多個項目和作業、與行業導師一對一、500 多個小時的學習。