依賴注入
假設當前有乙個使用者名叫bowman,bowman每天做三件事,看書,玩遊戲,抓寵物。
bowman需要使用乙個手機才能做這些事情,在不使用依賴注入的情況下,**是這樣的:
namespace dependency
}
namespace dependency
iphone6 iphone6 =
newiphone6()
;//直接在bowman的類當中例項化
public
void read (
)public
void
play()
public
void
grab()
}}
namespace dependency
}
namespace dependency
public
void
play
(string user,
int age)
public
void
grab
(string user,
int age)
}}
namespace dependency
}}
首先有乙個iphone6的類繼承了iphone類,iphone類當中沒有任何具體實現,但是iphone6類當中實現了看書,玩遊戲和抓寵物這三個功能。bowman類當中也沒有去做這三個功能的具體實現。此時,我們選擇的是在bowman類當中例項化iphone6類,然後在相應的方法當中呼叫iphone6類的方法。
程式執行的時候例項化bowman類,並呼叫bowman類相應的方法。
上面那種實現的方法有一種弊端,就是bowman和iphone6的耦合度過高,在那個程式當中,bowman如果失去iphone6就不能實現任何功能。因此我們需要依賴注入,依賴注入就是bowman不再一定要iphone6才能實現功能了,開發者設計了手機的功能之後直接把手機塞到bowman的手裡,以此來避免bowman和手機耦合度過高的問題
以下是使用依賴注入的情況:
namespace dependencyinjection
}
namespace dependencyinjection
public
void
read()
public
void
play()
public
void
grab()
}}
namespace dependencyinjection
public
virtual
void
play
(string user,
int age)
public
virtual
void
grab
(string user,
int age)
}}
namespace dependencyinjection
public
override
void
play
(string user,
int age)
public
override
void
grab
(string user,
int age)
}}
namespace dependencyinjection
public
override
void
play
(string user,
int age)
public
override
void
grab
(string user,
int age)
}}
namespace dependencyinjection
}}
在這裡,iphone,iphone6當中都有具體實現,並且新建了乙個iphone7的類(也有具體實現)。在使用依賴注入的時候,開發者直接給bowman乙個iphone(手機),bowman不需要去管是什麼手機,總之拿來就能用。主函式當中做的事情就是例項化bowman和iphone6以及iphone7,然後隨便塞一種iphone到bowman手裡,讓bowman執行三種功能。這就是依賴注入。
以上使用c#編寫
筆記 依賴注入
把有依賴關係的類放到容器中,解析出這些類的例項,就是依賴注入。目的是實現類的解耦 例 class a中用到了class b的物件b,一般情況下,需要在a的 中顯式的new乙個b的物件。採用依賴注入技術之後,a的 只需要定義乙個私有的b物件,不需要直接new來獲得這個物件,而是通過相關的容器控制程式來...
依賴注入學習筆記(一)認識依賴注入
1 什麼是依賴注入 筆記摘要 所謂的 依賴 就是指在實現某個功能模組時需要使用另外乙個 或多個 元件 或 服務 那麼這個所需的 元件 或 服務 將被稱為 依賴 依賴注入 通過以構造函式引數,設值方法或屬性欄位等方式將具體元件傳遞給依賴方。以建構函式的方式注入 class user storage n...
Spring依賴注入相關筆記
1.概述 從spring2.5開始就可以使用註解來配置依賴注入。而不是採用xml來描述乙個bean連線,你可以使用相關類,方法或字段宣告的註解,將bean配置移動到元件類本身。在xml注入之前進行註解注入,因此後者的配置將通過兩種方式的屬性連線別前者重寫。註解連線在預設的情況下在spring容器中打...