単一のモジュール内で作業する場合の依存関係の反転は理解していますが、モジュール間の依存関係がある場合にも適用したいと考えています。次の図では、既存のアプリケーションがあり、参照データ サービスのいくつかの新しい要件を実装する必要があります。新しい jar を作成しようと思いました (将来的にはスタンドアロン サービスになる可能性があります)。最初の図は、私が過去にそのようなことに取り組んできた通常の方法を示しています。referencedataservices jar には、アプリがそれを呼び出すために使用するインターフェイスがあります。
2 番目の図は、DIP を使用しようとした私の試みを示しています。現在、アプリはその抽象化を所有しているため、参照データ サービスが変更されたからといって変更されることはありません。ただし、循環依存関係が作成されるため、これは間違った設計のようです。MyApp は referencedataservices jar に依存し、referencedataservices jar は MyApp に依存します。
したがって、3 番目の図は、追加の抽象化レイヤーを作成することによって、より通常の依存関係に戻ります。私は正しいですか?それとも、これは本当に DIP が意図したものではないのでしょうか? 他のアプローチやアドバイスについて聞くことに興味があります。