どこかで読んだのですが、IOCはファクトリーパターンとは違います。ファクトリ設計パターンはより侵入的ですが、依存性注入はそうではありません。
誰かがこれについてもっと詳しく説明できますか?
どこかで読んだのですが、IOCはファクトリーパターンとは違います。ファクトリ設計パターンはより侵入的ですが、依存性注入はそうではありません。
誰かがこれについてもっと詳しく説明できますか?
はい、IoC と Factory は 2 つの異なるものです。IoC は実際にはより一般的な用語であり、多くのものが IoC に該当するため、参照している内容をさらに絞り込むのに役立ちます。たとえば、技術的には、コールバックまたはイベントは IoC の実装と見なされます。ただし、ほとんどの人は、IoC について話すとき、依存性注入を意味します。
依存性注入を使用して実現できるのと同じように、ファクトリを使用して制御の反転を実現できます。
おそらくあなたが考えているのは、Unity、Windows、Ninject などの依存性注入コンテナーです。DI コンテナーは一種の美化された抽象的なジェネリック ファクトリですが、オブジェクトの有効期間管理、条件付きバインディングなど、それ以上のことを行います。
実装自体がパターンである場合でも、パターン (IoC または DI) を実装 (Factory、DI コンテナー、Poor mans DI など) から分離することが重要です。
コントロール コンテナーの反転は、主に依存関係の挿入には使用されません。コンテナがオブジェクトの寿命を制御できるようにするためです。したがって、inversion of control
.
そのため、コンテナに物を登録するときは常にライフタイムを指定します (または単にデフォルトのライフタイムを使用します)。
ただし、コンテナはオブジェクトを作成するため、追加機能として依存性注入を提供することもできます。だから、それは本当にボーナスです。
一方、ファクトリ パターンは常に新しいオブジェクトを作成する必要があります。ファクトリ パターンの目的は、正しい実装を作成することです。