OOP の原則に関する多くのチュートリアルやブログを調べました。疎結合とテスト可能なクラスの作成を理解しているので、躊躇することが 1 つあります。
Lakeクラスがあるとしましょう。湖のクラスには、天気や場所 (戦略パターンなど) などの依存関係が注入されていますが、返されるクラス (魚としましょう) を作成します。
したがって、関数 catch() は Fish クラスを返します。
それは密結合ですか?魚クラスには「単体テスト」も必要なコンストラクターがありますか?
OOP の原則に関する多くのチュートリアルやブログを調べました。疎結合とテスト可能なクラスの作成を理解しているので、躊躇することが 1 つあります。
Lakeクラスがあるとしましょう。湖のクラスには、天気や場所 (戦略パターンなど) などの依存関係が注入されていますが、返されるクラス (魚としましょう) を作成します。
したがって、関数 catch() は Fish クラスを返します。
それは密結合ですか?魚クラスには「単体テスト」も必要なコンストラクターがありますか?
new Fish(); のようなクラスで Fish オブジェクトを直接インスタンス化する場合。その場合、2 つのクラスの間には密接な結合があります。Fish が単純なデータ転送オブジェクト (データを運ぶだけで、ほとんどロジックを持たないオブジェクト) 以上のものである場合、このような密結合は避けたいと思います。
これを解決するにはいくつかの方法があります。たとえば、次のとおりです。
ただし、Fish が単純な DTO にすぎない場合、複雑さ、読みやすさ、およびパフォーマンスの点で努力する価値があるかどうかは疑問です。
お役に立てれば。