2011-02-05 109 views
2

想知道它是否適合混合依賴注入與工廠模式?我會在運行時創建不同類型的對象,並使用它們在DI很好的情況下注入東西,因此可以在工廠構造中注入傳遞連接字符串或其他東西?將依賴注入與工廠模式混合很好嗎?

謝謝。

+1

這裏是Q的清單及作爲該說說DI和抽象工廠:http://stackoverflow.com/questions/2280170/why-do-we-need-abstract-factory-design-pattern/2280289#2280289 – 2011-02-05 18:20:17

回答

5

這其實很常見。如果你需要某個類的實例,你將注入一個工廠而不是特定的對象。但是,您應該使用容器來構造這些對象(如果需要構建其他對象),請保留該模式並且不要創建依賴項。

1

絕對!你甚至可以將物體注入工廠!

public class UserFactory 
    private final UserStore userStore; 

    @Inject 
    UserFactory(UserStore userStore) { 
    this.userStore; 
    } 

    // etc 
} 

public class CreateUserAction implements Action { 
    private final UserFactory userFactory; 

    @Inject 
    CreateUserAction(UserFactory userFactory) { 
    this.userFactory = userFactory; 
    } 

    @Override 
    void performAction() { 
    User user = userFactory.newUser().withRandomId().persisted().build(); 
    } 
}