什麼是耦合?

來源:互聯網
上載者:User

Jams Gosling(Java之父)說過,“想拋棄classes”當然,他的意思是,不是拋棄class本身,而是繼承(extends 關係)。他想用介面(implements關係)來代替extends是更好的。我們應該儘可能的避免實現繼承,原因如下:
1 失去靈活性,使用具體類會給底層的修改帶來麻煩。
2 耦合問題,耦合是指兩個實體相互依賴於對方的一個量度。程式員每天都在(有意識地或者無意識地)做出影響耦合的決定:類別結合程度、API耦合、應用程式耦合等等。在一個用extends的繼承實現系統中,衍生類別是非常緊密的與基類別結合程度,而且這種緊密的串連可能是被不期望的。如B extends A ,當B不全用A中的所有methods時,這時候,B調用的方法可能會產生錯誤!

   我們必須客觀的評價耦合度,系統之間不可能總是松耦合的,那樣肯定什麼也做不了。而我們決定耦合的程度的依據何在呢?簡單的說,就是根據需求的穩定性,來決定耦合的程度。對於穩定性高的需求,不容易發生變化的需求,我們完全可以把各類設計成緊耦合的(我們雖然討論類之間的耦合度,但其實功能塊、模組、包之間的耦合度也是一樣的),因為這樣可以提高效率,而且我們還可以使用一些更好的技術來提高效率或簡化代碼,例如Java中的內部類技術。可是,如果需求極有可能變化,我們就需要充分的考慮類之間的耦合問題,我們可以想出各種各樣的辦法來降低耦合程度,但是歸納起來,不外乎增加抽象的層次來隔離不同的類,這個抽象層次可以是具體的類,也可以是介面,或是一組的類(例如Beans)。我們可以借用Java中的一句話來概括降低耦合度的思想:"針對介面編程,而不是針對實現編程。

   在我們進行編碼的時候,都會留下我們的指紋,如public的多少,代碼的格式等等。我們可以耦合度量評估重新構建代碼的風險。因為重新構建實際上是維護編碼的一種形式,維護中遇到的那些麻煩事在重新構建時同樣會遇到。我們知道在重新構建之後,最常見的隨機bug大部分都是不當耦合造成的 。
如果不穩定因素越大,它的耦合度也就越大。如果不穩定因素越大,它的耦合度也就越大。

某類的不穩定因素=依賴的類個數/被依賴的類個數
依賴的類個數= 在編譯此類的時被編譯的其它類的個數總和

   怎樣將大系統拆分成小系統,解決這個問題的一個思路是將許多類集合成一個更高層次的單位,形成一個高內聚、低耦合的類的集合,這是我們設計過程中應該著重考慮的問題!

   耦合的目標是維護依賴的單向性,有時我們也會需要使用壞的耦合。在這種情況下,應當小心記錄下原因,以協助日後該代碼的使用者瞭解使用耦合真正的原因。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.