2015-08-09 46 views
1

我來自服務器端語言背景(Symfony2)。我所知道的是,依賴注入和麪向服務的體系結構是面向對象編程的特定對象。從他們的文檔:依賴注入特定於面向對象的模式嗎?

構建圍繞一組獨立的服務 類的應用程序是一個著名的和值得信賴的面向對象的最佳實踐。這些技能是成爲幾乎任何語言的優秀開發人員的關鍵。

我正在閱讀客戶端框架文檔(AngularJS),正是依賴注入章節。 angularJs是用OOP寫的嗎?有人請幫我理解。

感謝您的平常幫助。

回答

4

依賴注入的概念是基於以下思路:

  • 的實體(對象,模塊等)不應該以編程方式創建它取決於實體。
  • 相反,應該將這些依賴項作爲參數傳遞(注入)。
  • 這減少了不想要的耦合,並允許其它實施方式更容易被取代的(例如,可替代的數據源,存根或嘲笑用於測試)

正如道格盧斯在他的回答指出,這個概念可以在其他編程應用範例。該術語在面向對象的圓圈中最爲常見,因爲:

  • (編程)設計模式的起源是面向對象的編程。
  • 依賴注入可以緩解大型面向對象程序變得過於緊密耦合,難以測試和易變的傾向。

在某些情況下,如純函數式編程,對依賴注入(它傾向於自然發生)等需求較少。在結構化語言中沒有面向對象的特性,這個概念仍然非常有用(可能更是如此)。在非面向對象的結構語言中,沒有明確且易於使用的依賴注入機制。由於JavaScript既具有面向對象又具有功能特徵,我期望AngularJS程序員充分利用這些特性,並在適當的時候使用依賴注入。

+0

謝謝先生,我現在開始理解。很好地解釋 –

1

當這個概念被稱爲「依賴注入」時,它幾乎總是存在於面向對象模式的語言中。但是傳遞函數可以使用的一大堆可執行代碼的想法僅取決於語言系統有辦法做到這一點:函數類型,閉包,單子,承諾或任何可能的伎倆。