沒有任何軟件系統(tǒng)可以擺脫依賴關(guān)系,或者保證即使依賴組件發(fā)生變化也不會(huì)產(chǎn)生任何影響。軟件架構(gòu)師總是要處理相互連接的組件之間的依賴程度,并盡量減少甚至消除這種影響。如果軟件組件 A 在如下情況下需要軟件組件 B,那么軟件組件 A 就依賴于軟件組件 B:
耦合是任意架構(gòu)構(gòu)件之間的依賴程度。
在不同抽象層次上,存在著不同類型的耦合。耦合不僅發(fā)生在源代碼層面,還發(fā)生在基礎(chǔ)架構(gòu)以及其他方面。軟件架構(gòu)師需要了解這些類型,以便在設(shè)計(jì)這些組件時(shí)做出正確決定。我們將根據(jù) ISAQB 軟件架構(gòu)認(rèn)證課程來了解這些耦合類型。
這種耦合是經(jīng)典耦合之一?;旧?,如果類 A 調(diào)用類 B 的公有變量,它們就會(huì)通過使用/委托耦合在一起。最好的解決方法是將這些公有變量私有化,并通過 getter 調(diào)用它們。
在組合關(guān)系中,正如面向?qū)ο缶幊讨兴x的,類 A 包含類 B。在某些情況下,類 B 可以是類 A 的內(nèi)部部分,并不獨(dú)立存在。因此,這些類通過組合關(guān)系耦合在一起。
這類耦合出現(xiàn)在工廠、抽象工廠等構(gòu)建設(shè)計(jì)模式中。在這些設(shè)計(jì)模式中,類 A 或 B 的構(gòu)建被委托給工廠類。也就是說,類 A 或 B 是通過構(gòu)建與工廠類耦合的。
子類繼承超類的屬性和方法的一種依賴關(guān)系。通過繼承產(chǎn)生的耦合非常嚴(yán)格,因?yàn)楦割愖鍪裁?,子類就做什么?span style="display:none">Sxi28資訊網(wǎng)——每日最新資訊28at.com
消息傳遞中間件和事件存儲(chǔ)廣泛用于組件之間的松散耦合。在消息傳遞中,通信是異步的,發(fā)送方的請求被發(fā)送到消息隊(duì)列中,接收方從隊(duì)列中獲取請求。發(fā)送方可能知道也可能不知道哪個(gè)接收方收到了請求,也不會(huì)立即回復(fù)。在事件處理中,想法與消息傳遞類似,但這里的狀態(tài)變化是按時(shí)間順序傳遞給監(jiān)聽者的。由于這種通信也是異步的,耦合非常松散,因此非常受歡迎。
在這種耦合中,如果 A 組件在 B 組件提供某些輸出之前無法執(zhí)行其工作,那么 A 組件就會(huì)暫時(shí)依賴于 B 組件。在這種耦合中,組件 A 和組件 B 不需要使用相同的編程語言或基礎(chǔ)設(shè)施。例如,要在電商網(wǎng)站中購買一些商品,首先需要選擇并將商品添加到購物車中。
根據(jù)業(yè)務(wù)需要,開發(fā)者會(huì)創(chuàng)建一些自定義數(shù)據(jù)類型以供進(jìn)一步使用。例如,在 JPA 中創(chuàng)建的 UserEntity 與數(shù)據(jù)庫中的 User 表相對(duì)應(yīng)。因此,UserEntity 將成為軟件系統(tǒng)中的核心數(shù)據(jù)類型,在任何需要處理用戶數(shù)據(jù)的地方都可以使用。如果 UserEntity 有微小的變化,所有依賴類都會(huì)受到影響。這就是通過數(shù)據(jù)類型實(shí)現(xiàn)的耦合。
當(dāng)組件 A 在數(shù)據(jù)庫、配置文件或環(huán)境變量中持久化保存信息,而組件 B 也與之通信時(shí),就會(huì)出現(xiàn)數(shù)據(jù)耦合。如果一個(gè)組件的變化通過這些耦合數(shù)據(jù)影響到另一個(gè)組件,那么很可能需要松開這些耦合。
設(shè)想有一個(gè)物理硬件或服務(wù)器,組件 A 在內(nèi)存位置寫入了一些內(nèi)容,組件 B 在讀取這些內(nèi)容時(shí)也會(huì)受到影響。這種耦合是通過硬件實(shí)現(xiàn)的,經(jīng)常發(fā)生在底層編程中。
本文鏈接:http://www.tebozhan.com/showinfo-26-99900-0.html軟件架構(gòu)中的九種耦合形式
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: InheritableThreadLocal 是如何實(shí)現(xiàn)的父子線程局部變量的傳遞
下一篇: 結(jié)合Spring Boot 3.x與機(jī)器學(xué)習(xí)算法優(yōu)化推薦系統(tǒng)