[設計模式] 耦合和解耦的概念解析


耦合就是兩個層之間有依賴關系?
==
同一個層也可能有依賴關系

看見有解耦的方法就是在相互依賴的兩層之間加一層,可是新加的一層不是又和原來的兩層有耦合關系了嗎?
==
解耦的方式是讓設計依賴於抽象,而不是依賴於實現,看看設計模式的原則

到底什么是耦合??
==
A明確地使用B資源

publci class A
{
         B b;
}

public class B
{

}

現在A依賴於B

interface IX
{
...
}

public class A
{
      IX i;
       public A(IX  i)
      {
              this.i = i;
      }       
}

public class B:IX
{

}

調用的時候,我可以決定用哪個實現接口的類,甚至可以是從配置文件反射生成

A  a = new A(new B());
也可能因為某個條件
A  a = new A(new C());

這樣 A依賴的是抽象的接口IX,而不是具體的類B或者C

追問

恕小弟愚昧,弱弱的問下,這里所說的“依賴抽象的接口不依賴現實”,是不是說不管類B,類C編譯的版本怎么變,但始終可以調用接口來調用類B,類C,所以類A不用編譯了?

 
回答

1. 如果B發生了修改,那我們可以使用C,因為我們依賴的是接口,而不是具體的類(對象)
打個比方,汽車制造者可以依賴於輪胎這個抽象的東西,但不能依賴於具體的品牌比如"風神輪胎"

2. 當需求改變的時候,我們需要修改的只有Main函數所在的類(甚至它都可能不用修改,只需要修改配置文件就可以)。
重新編譯程序的代價很大,打個比方,windows有更新了,只是提供補丁,而不是給一版新的windows吧

軟件設計程序的基本思想是,當需求改變的時候,我們的應用程序改變最小


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM