松耦合
編輯- 其中組件之間的關聯較弱(具有可破壞的關系),因此一個組件的更改對另一個組件的存在或性能的影響最小。
- 其中每個組件對其他單獨組件的定義知之甚少或一無所知。 子領域包括類、接口、數據和服務的耦合。 松緊合與緊耦合相反。
優點和缺點
編輯松散耦合系統中的組件可以替換為提供相同服務的替代實現。 松散耦合系統中的組件較少受限于相同的平臺、語言、操作系統或構建環境。
如果系統及時解耦,則很難同時提供事務完整性; 需要額外的協調協議。 跨不同系統的數據復制提供了松耦合(可用性),但在保持一致性(數據同步)方面產生了問題。
整合中
編輯更廣泛的分布式系統設計中的松弛結合是通過使用事務、面向消息的中間件提供的隊列和互操作性標準來實現的。
促進松散耦合的四種自治類型是:引用自治、時間自治、格式自治和平臺自治。
松懈合是面向服務架構中的架構原則和設計目標; 十一種形式的松耦合及其對應的緊耦合列于:
- 通過調解員進行物理連接,
- 異步溝通方式,
- 僅在數據模型中的簡單通用類型,
- 弱類型系統,
- 以數據為中心且獨立的消息,
- 流程邏輯的分布式控制,
- 動態綁定(服務消費者和提供者),
- 平xxx立性,
- 業務級薪酬而不是系統級交易,
- 在不同時間部署,
- 版本控制中的隱式升級。
企業服務總線(ESB)中間件被發明來實現多維度的松耦合; 然而,過度設計和錯誤定位的 ESB 也會產生相反的效果,并產生不希望的緊密耦合和中心架構熱點。
事件驅動架構也旨在促進松散耦合。
降低耦合的方法
可以通過以標準格式(例如 XML 或 JSON)發布數據來增強接口的松緊結合。
可以通過在參數中使用標準數據類型來增強程序組件之間的松緊結合。 傳遞自定義數據類型或對象需要兩個組件都了解自定義數據定義。
可以通過減少傳遞到服務中的關鍵數據的信息來增強服務的集成。 例如,當僅傳遞客戶標識符并在服務中獲取客戶地址時,發送信件的服務的可重用性最高。 這解耦了服務,因為不需要按特定順序調用服務(例如 GetCustomerAddress、SendLetter)。
在編程中
編輯耦合是指一個組件對另一個組件的直接了解程度。 計算中的松緊合被解釋為封裝與非封裝。
當依賴類包含直接指向提供所需行為的具體類的指針時,就會出現緊耦合的例子。 如果不更改依賴類,則無法替換依賴項或更改其簽名。 當依賴類僅包含一個指向接口的指針時,就會發生松綁合,然后可以由一個或多個具體類實現該接口。 依賴類的依賴是接口指定的契約; 實現類必須提供的定義的方法和/或屬性列表。 因此,任何實現該接口的類都可以滿足依賴類的依賴性,而無需更改該類。
這允許軟件設計的可擴展性; 可以編寫一個實現接口的新類來替換某些或所有情況下的當前依賴項,而無需更改依賴類; 新舊班級可以自由互換。 強耦合不允許這樣做。
這是一個 UML 圖,說明了依賴類和一組具體類之間松散耦合的示例,這些具體類提供了所需的行為:
為了進行比較,此圖說明了依賴類和提供者之間具有強耦合的替代設計:
其他形式
將函數作為核心模塊(請參閱函數式編程)或將函數作為對象的概念的計算機編程語言提供了松散耦合編程的絕佳示例。 函數式語言具有 Continuations、Closure 或生成器的模式。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/204317/