A と B の 2 つのクラスがあります。B は A から継承しています。依存関係を逆にしたいと考えています。
クラス A { }
クラス B : A { }
クラス B は A から継承しています。つまり、B には A からの依存関係があります。
依存関係を逆にする正しい方法は何ですか?
A と B の 2 つのクラスがあります。B は A から継承しています。依存関係を逆にしたいと考えています。
クラス A { }
クラス B : A { }
クラス B は A から継承しています。つまり、B には A からの依存関係があります。
依存関係を逆にする正しい方法は何ですか?
継承は、クラス間の密結合を意味する概念です。
依存性注入を使用するには、Michael Feathers がWorking Effectively with Legacy Codeで呼んでいるように、いくつかの「継ぎ目」を作成する必要があります。ここでは、Seam の定義を見つけることができます。
seam は、その場所を編集せずにプログラムの動作を変更できる場所です。
縫い目があれば、行動を変えることができる場所があります。
この定義により、あなたの例には Seam がありませんが、これは必ずしも悪いことではありません。問題は、なぜこの場所で Dependency Injection を行う必要があると感じたのかということです。
例のためであれば、ここで依存性注入を行わないでください。それを適用することが実際には意味をなさない場所があります。ボラティリティがない場合、なぜそれを適用するのでしょうか?
プロジェクトで似たようなことをする必要性を本当に感じている場合は、揮発性の概念を継承階層から分離し、これらの部分の Seam を作成することをお勧めします: これらの概念を抽象化するインターフェースを持つことができます。ポイントを効果的にクライアント クラスに注入できます。