簡単に説明できますか:依存性注入とファクトリデザインパターンの主な違いは何ですか?
さらに:コード例によって非常に簡単に違いを示すことは可能ですか?
ありがとう
簡単に説明できますか:依存性注入とファクトリデザインパターンの主な違いは何ですか?
さらに:コード例によって非常に簡単に違いを示すことは可能ですか?
ありがとう
ファクトリ パターンは通常、複雑なインスタンス化ロジックを持つ可能性のあるオブジェクトのインスタンスを繰り返し作成する場合に役立ちます。このようにして、クラスはファクトリとリクエストのインスタンスを認識します。
依存性注入は、クラスに関する限り、インスタンス化ロジックを完全に抽象化するためにさらに一歩進んでいます。コードが気にする必要があるのは、必要な依存関係を宣言することだけです。依存関係がどこから来たのか気にする必要はありません。
詳細なガイドについては、Inversion of Control Containers and the Dependency Injection pattern を参照してください。
Factory (またはその他の作成パターン) では、呼び出し元はオブジェクトを取得する方法を知っている必要があり、それを消費する前に "明示的に" 要求する必要があります。
Car car = CarFactory.getCarByModel(LUXURY);
一方、DIを使用する場合、目的のオブジェクトを渡す責任は、オブジェクトを作成する方法を知っている外部の(主にコンテナ)エンティティに委任されます(すでに定義されている構成を読み取ることにより)、呼び出し元が静かに利用できるようにします。
Car car = getCar();
void setCar(Car car){..} // container sets the car fromoutside
両方のパターンで同じ目標が達成されます。ファクトリデザインパターンではコードを記述しなければならないのに対し、DIでは既存のDIフレームワークを使用して作業を行い、依存関係の構成を行うだけです。ファクトリパターンを使用すると、クラス用のファクトリを作成する必要があります。