2012-02-14 39 views
3

我有興趣瞭解以下場景是否是依賴注入的良好用例。這個例子有點彌補,可能不是很好的面向對象設計。請多多包涵,並側重於涉及問題的一部分:依賴注入 - 在運行時決定參數

比方說,我有以下類別:

class BankAccount 
{ 
    User user; 
    Integer accountNo; 

    BankAccount(User user, Integer accountNo){ 
     .... 
    } 
} 

class User 
{ 
    String firstName, lastName; 

    User(String firstName, String lastName) 
    { 
     .... 
    } 
} 

比方說,我要創建在以下情況下的對象:

void withoutDependecyInjectionUsingNewOperator() 
{ 
    User user = new User("Lance", "Armstrong"); 
    // These values are determined 
    // based on form input on UI 
    BankAccount account = new BankAccount(user, 1233); 
} 

我已經瞭解了支持DI的Guice或Spring等框架。 如果我使用任何這些框架,我應該改變上述功能 以使用DI?

根據我在教程中看到的例子,當構造函數參數可以決定爲配置而不是 這些值最終基於用戶輸入時,它似乎最有用 ?

謝謝!

+0

相關:http://stackoverflow.com/questions/4835046/why-not-use-an-ioc-container-to-resolve-dependencies-for-entities-business-objec/4836790#4836790 – 2012-02-14 03:07:51

回答

1

根據你發佈的內容,這不是正確使用依賴注入。這是一個適合工廠模式的好例子。依賴注入用於通過使用接口消除對特定類型的依賴,並且僅在運行時設置具體類型(通常使用第三方框架,如ninject)

例如,您可以擁有BankAccount類型使用的IUserFactory得到IUsers。在運行時,BankAccount類可以用一個具體的UserFactory類「注入」,而不是具有編譯時間依賴性。然後,您可以換出UserFactories而不需要BankAccount類。