Guice指南-手工依賴注入
手工依賴注入
依賴注入模式的目標之一是使單元測試更簡單。我們不需要特殊的框架就可以實踐依賴注入模式。依靠手工編寫程式碼,你可以得到該模式大約80%的好處。
當上例中的客戶程式碼向工廠物件請求一個服務時,根據依賴注入模式,客戶程式碼希望它所依賴的物件例項可以被傳入自己。也就是說:不要呼叫我,我會呼叫你。
當上例中的客戶程式碼向工廠物件請求一個服務時,根據依賴注入模式,客戶程式碼希望它所依賴的物件例項可以被傳入自己。也就是說:不要呼叫我,我會呼叫你。
public class Client {
private final Service service;
public Client(Service service) {
this.service = service;
}
public void go() {
service.go();
}
}
private final Service service;
public Client(Service service) {
this.service = service;
}
public void go() {
service.go();
}
}
這讓我們的單元測試簡化了不少。我們可以只傳入一個偽服務物件,在結束後也不需要多做什麼。
public void testClient() {
MockService mock = new MockService();
Client client = new Client(mock);
client.go();
assertTrue(mock.isGone());
}
MockService mock = new MockService();
Client client = new Client(mock);
client.go();
assertTrue(mock.isGone());
}
我們也可以精確地區分出客戶程式碼依賴的API。
現在,我們如何連線客戶和服務物件呢?手工實現依賴注入的時候,我們可以將所有依賴邏輯都移動到工廠類中。也就是說,我們還需要有一個工廠類來建立客戶物件。
現在,我們如何連線客戶和服務物件呢?手工實現依賴注入的時候,我們可以將所有依賴邏輯都移動到工廠類中。也就是說,我們還需要有一個工廠類來建立客戶物件。
public static class ClientFactory {
private ClientFactory() {}
public static Client getInstance() {
Service service = ServiceFactory.getInstance();
return new Client(service);
}
}
private ClientFactory() {}
public static Client getInstance() {
Service service = ServiceFactory.getInstance();
return new Client(service);
}
}
手工實現依賴注入需要的程式碼行數和簡單工廠模式差不多。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-214952/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【翻譯】 Guice 動機——依賴注入的動機GUI依賴注入
- angular依賴注入Angular依賴注入
- XUnit 依賴注入依賴注入
- 依賴注入?依賴注入是如何實現解耦的?依賴注入解耦
- 我看依賴注入依賴注入
- 依賴注入系列教程依賴注入
- Spring 依賴注入 DISpring依賴注入
- 理解 Angular 依賴注入Angular依賴注入
- Abp vNext 依賴注入依賴注入
- Sping-依賴注入依賴注入
- Spring IOC——依賴注入Spring依賴注入
- [譯] 依賴注入?? 哈??依賴注入
- Angular 依賴注入原理Angular依賴注入
- spring 的依賴注入Spring依賴注入
- .Net Core — 依賴注入依賴注入
- 關於依賴注入(typescript)依賴注入TypeScript
- 深入淺出依賴注入依賴注入
- AngularJS 4(六)【依賴注入】AngularJS依賴注入
- .NET8 依賴注入依賴注入
- Spring.Net 依賴注入Spring依賴注入
- 入門系列-依賴注入依賴注入
- Spring系列.依賴注入配置Spring依賴注入
- Asp .Net Core 依賴注入依賴注入
- C# 依賴注入 & MEFC#依賴注入
- IOC容器和依賴注入依賴注入
- 什麼是依賴注入依賴注入
- 大白話spring依賴注入Spring依賴注入
- Golang 依賴注入設計哲學|12.6K 🌟 的依賴注入庫 wireGolang依賴注入
- 類的反射和依賴注入反射依賴注入
- [譯]javascript中的依賴注入JavaScript依賴注入
- PHP 依賴注入容器實現PHP依賴注入
- Laravel 使用依賴注入呼叫方法Laravel依賴注入
- Spring的依賴注入的方式Spring依賴注入
- 為什麼需要依賴注入依賴注入
- WinForm依賴注入簡單使用ORM依賴注入
- Spring學習(三)依賴注入Spring依賴注入
- 依賴注入實現元件化依賴注入元件化
- Go 官方依賴注入工具wireGo依賴注入
- .NET之預設依賴注入依賴注入