您現在的位置是:首頁 > 網頁遊戲首頁網頁遊戲

C#開發者一定要避免程式中大量的依賴,而是使用依賴倒置減少依賴

簡介透過以上的程式碼修改完成之後,就符合依賴倒置的原則,讓C1不再依賴於C2,而是依賴於IC2這個抽象介面

操作者依賴什麼意思

01

第一節:什麼是依賴?

ASP。NET Core Mvc中的依賴與我們現實生活中的依賴含義是一樣的,例如,小明是個小孩子,需要靠爸爸和媽媽的撫養才能長大,因此,小明就依賴於爸爸和媽媽。

再比如,小強在IT公司上班,那麼小強的收入就依賴於公司或工作。小強不工作,就沒有收入,只有工作了才有收入,因此,小強和工作之間存在依賴關係。

而在C#程式中,類和類之間也存在依賴,例如:在C1類中使用到了C2類,那麼C1類就依賴於C2類。

程式碼如下:

namespace Yidosoft。Edu。CoreMvc。Test

{

public class C2

{

public void Run()

{

Console。Write(“這是C2類。”);

}

}

}

C#開發者一定要避免程式中大量的依賴,而是使用依賴倒置減少依賴

這個類是C2類,其中有一個Run()方法,並輸出一段文字資訊。

namespace Yidosoft。Edu。CoreMvc。Test

{

public class C1

{

public void GO()

{

C2 c2 = new C2();

c2。Run();

}

}

}

C#開發者一定要避免程式中大量的依賴,而是使用依賴倒置減少依賴

此時,在C1類中例項化了C2類,並還呼叫了C2類中的Run()方法。

這個時候,C1類的正常執行是依賴於C2類的,也就是C1依賴於C2。

02

第2節:依賴倒置

如果你的ASP。NET Core Mvc中存在大量的依賴,則在程式執行或修改時,就會存在大量的麻煩。會出現動一處而動全身,使程式越來越脆弱。

因此,我們需要一種方法來解決這種依賴問題,使程式中的依賴性越少越好。

依賴倒置就是用來解決程式中大量出現依賴的問題,具有5大原則:

上層模組不應依賴於下層模組,而是共同依賴於第三方的一個抽象。

類是抽象的,物件是具體的,具體要依賴於抽象,但是抽象絕對不能依賴於具體。

對於上下層的理解很關鍵,上層就是使用者,如上例子中的C1,而下層就是被使用者,如上例子中的C2。

實際上,C1是不應該依賴於C2的,因為C2類發生了變化之後,會直接傳送到C1,這樣C1也會發生變化,具有連鎖反應。

下面,我們根據依賴倒置原則,將上面的C1和C2進行修改,程式碼如下:

IC2。cs檔案的程式碼如下:

namespace Yidosoft。Edu。CoreMvc。Test

{

public interface IC2

{

void Run();

}

}

這是一個介面,介面是抽象的,沒有具體實現,只是定義一些規則。

C2。cs檔案程式碼如下:

namespace Yidosoft。Edu。CoreMvc。Test

{

public class C2:IC2

{

public void Run()

{

Console。Write(“這是C2類。”);

}

}

}

將C2繼承於IC2,它們存在繼承關係。這樣IC2就抽象出來了。

C1。cs檔案的程式碼如下:

namespace Yidosoft。Edu。CoreMvc。Test

{

public class C1

{

public void GO()

{

IC2 c2 = new C2();

c2。Run();

}

}

}

此時,在C1中,我們是使用了IC2型別的變數來接收C2的例項化物件。

透過以上的程式碼修改完成之後,就符合依賴倒置的原則,讓C1不再依賴於C2,而是依賴於IC2這個抽象介面。

如果C2類發生了變化,是不會影響到C1類的,因為在C1中,我們使用到的是IC2介面中的方法,而不是C2中的方法。

現在,我們將C1的程式碼放在Main()方法中:

using System;

using Yidosoft。Edu。CoreMvc。Test;

namespace ConsoleApp1

{

class Program

{

static void Main(string[] args)

{

C1 c1 = new C1();

c1。GO();

Console。ReadKey();

}

}

}

在Program。cs類中,需要新增C1/C2/IC2所在的名稱空間,然後在Main()方法中例項化C1類,並在物件中訪問GO()方法。

執行一下結果:

C#開發者一定要避免程式中大量的依賴,而是使用依賴倒置減少依賴

此時,已經在C1中執行了IC2介面中的方法,並輸出內容。

在上面的例子中,我們詳細講解了什麼是依賴,透過例子,我們理解依賴存在很大的問題,如果程式中存在很依賴,就會讓我們天天在改程式,開發效果極低。而透過依賴倒置的原則,抽象出來一個介面,此時,讓使用具體的物件的類依賴於抽象介面,就解決了依賴問題,這是對程式開發的一種設計原則。

所以,各位開發者,在開發程式時,不要堆程式碼,也不要開始嫌麻煩,建立很多的介面和抽象類,目的就是為了後期更好的維護和程式的執行。

且開發起來也不那麼費勁,讓測試者也發現不了問題,對一個程式設計師來說,沒有問題的程式才是對自己最大的尊重。

Top