1

OOP の原則に関する多くのチュートリアルやブログを調べました。疎結合とテスト可能なクラスの作成を理解しているので、躊躇することが 1 つあります。

Lakeクラスがあるとしましょう。湖のクラスには、天気や場所 (戦略パターンなど) などの依存関係が注入されていますが、返されるクラス (魚としましょう) を作成します。

したがって、関数 catch() は Fish クラスを返します。

それは密結合ですか?魚クラスには「単体テスト」も必要なコンストラクターがありますか?

4

1 に答える 1

3

new Fish(); のようなクラスで Fish オブジェクトを直接インスタンス化する場合。その場合、2 つのクラスの間には密接な結合があります。Fish が単純なデータ転送オブジェクト (データを運ぶだけで、ほとんどロジックを持たないオブジェクト) 以上のものである場合、このような密結合は避けたいと思います。
これを解決するにはいくつかの方法があります。たとえば、次のとおりです。

  1. Fish を作成する抽象ファクトリを Lake に注入します。したがって、作成プロセスを置き換えることができます。
  2. コントロール コンテナーの反転を使用して、魚を作成するように依頼します。このようなコンテナは、構成可能なファクトリと考えることができます。Service Locator パターンは、この状況で便利なアプローチです。

ただし、Fish が単純な DTO にすぎない場合、複雑さ、読みやすさ、およびパフォーマンスの点で努力する価値があるかどうかは疑問です。

お役に立てれば。

于 2013-11-05T16:39:32.397 に答える