2

私はこれについて数ヶ月頭を悩ませてきましたが、それでも自分が正しい答えを持っていることを十分に納得させることができました. アプリケーションの複数のレイヤー間に依存関係があり、各レイヤーが独自のアセンブリにある、非常に典型的な状況があります。例として、アプリケーション レイヤーはリポジトリ レイヤーを使用して、非常に標準的なデータを取得します。私の質問は、抽象化 (この場合はインターフェイス) がどこにあり、その理由は何ですか? 与えられた例では、アプリケーション層またはリポジトリ層または別の抽象化アセンブリに入れる必要がありますか?

The Clean Architecture の説明の図と説明に基づいて(特にこだわっているものではありません)、すべての依存関係が内側を向くようにアプリケーション層に配置しましたが、これが正しいかどうかはわかりません。私はかなりの数の他の記事を読み、数え切れないほどの例を見てきましたが、抽象化がどこにあるべきかについて推論する方法はほとんどありません。

私はこの質問を見てきましたが、もちろん実際の答えが問題ではない場合を除き、それが私の質問に答えているとは思いません。

4

1 に答える 1

2

より高いレベルのモジュールからより低いレベルへの従来の依存関係の方向が次のように反転されるため、これは依存関係逆転の原則と呼ばれます。

| HigherLevelClass -> RequiredInterface | <= LowerLevelClassImplementingTheInterface |

したがって、逆依存関係は、下位レベルのモジュールから上位レベルのモジュールに必要な抽象化を指しています。クライアント モジュール (アプリケーション層)特定の下位レベルの機能を必要とするため、関連する抽象化 (リポジトリ インターフェイス) はクライアント モジュールの近くに配置されます。

私が知っているすべての説明では、これを説明するためにパッケージ構造を使用しています。ただし、これがモジュールまたはレイヤーに当てはまらない理由はわかりません。

詳細については、たとえば次を参照してください: http://en.wikipedia.org/wiki/Dependency_inversion_principle

于 2015-01-08T21:39:36.820 に答える