2011-02-05 11 views
2

工場パターンとの依存性注入を混在させるのが良いかどうか知りたいですか?私は実行時に異なる種類のオブジェクトを作成し、DIは何かを注入するのに適しているので、それらを使用します。そうすれば、接続文字列または何かを渡すなどの工場建設に注入することは大丈夫ですか?依存性注入と工場パターンを混在させるのは良いですか?

ありがとうございました。

+1

ここでQの&DIと抽象ファクトリーについてその話としてリストがあります:http://stackoverflow.com/questions/2280170/why-do-we-need-abstract-factory-design-pattern/2280289#2280289 –

答えて

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(); 
    } 
}