欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

為什么有很多人說Go語言不需要依賴注入

老白2年前27瀏覽0評論

為什么有很多人說Go語言不需要依賴注入?

依賴注入

依賴注入(Dependency Injection)是一種鼓勵模塊化的軟件工程范式,是面向對象編程中的一種設計原則,可以用來減低計算機代碼之間的耦合度。而通過模塊與模塊的依賴做解耦,有利于:

模塊更加“獨立”模塊與模塊之間“獨立”,方便分團隊開發(fā)模塊可以更容易的被其它程序調用,方便構造高度復雜的程序模塊更容易被測試

上述就是依賴注入的目的,它其實是獨立于依賴注入的實現(xiàn)。

更加具體的說,是否使用反射,是否支持在運行時通過修改配置來替換依賴的等等,是屬于具體依賴注入實現(xiàn)的特性;它們其實無關于依賴注入范式的考量。

使用依賴注入是為了讓程序可以更好模塊化管理,將模塊與依賴解耦,以便于測試,構造高度復雜的程序;而不是為了在運行時通過修改配置來替換依賴實現(xiàn)。

換句話說,如果我們開發(fā)的程序足夠簡單,那么是沒有必要去使用依賴注入范式的;但如果我們開發(fā)的是一款高度復雜、需要多團隊配合的程序,類似依賴注入這樣的范式,則顯得必不可少。

Go語言

那么go語言是否需要依賴注入?

顯然需要,比方說,谷歌開源的go-cloud,這個支持跨云服務商的SDK,便是例子;其團隊為了使用依賴注入范式,也順帶開源了wire:一個基于編譯時、代碼生成實現(xiàn)的依賴注入框架。

Go對獨特的語言特性其實不是內置支持goroutine(協(xié)程在很多語言其實都有內置或者類庫層面的支持),而是其interface接口,在go語言里面,接口的定義可以遲于實現(xiàn)。

開發(fā)go程序的時候,我們可以直接編寫struct的實現(xiàn),而無需關心,甚至無法關心具體struct實現(xiàn)了哪些接口。什么樣的函數(shù)簽名組合才構成一個接口,在go語言里面可以是取決于類庫、模塊的使用者,而不是實現(xiàn)者。

Go語言的接口可以遲于struct實現(xiàn)來定義這一獨一無二的語言特性,使得我們在使用依賴注入的時可以先方便的注入具體類型;而在后續(xù)需要擴展為“接口”,提供多個實現(xiàn)的時候,無需修改模塊代碼。

可以說,go語言與依賴注入范式是相當絕妙的搭配。

總結

Go語言的interface的特性使得在很多情況下,依賴注入變得沒有如Java等語言中重要。然而,依賴注入在一些復雜的場景中也有用武之地,go與依賴注入仍有很大的研究空間。

java inject,為什么有很多人說Go語言不需要依賴注入