誰かが Java.FindBugs の 2 つのクラス間の循環依存関係を解消する良い方法についてアドバイスできるかどうか疑問に思うので、誰かがこの種の問題について良い経験を持っているかどうか疑問に思います。
3 に答える
循環依存は常に避けるべきではありません。私はそれらを大規模に避けたいと思いますが、システムの小さな狭いコーナーに留めておきます。大規模な場合、つまりデータ アクセス層と J2EE アプリの表現層が循環的に依存している場合、これは悪いことだと言えます。すべてを一度にコンパイルする必要があり、テストは悪夢になるからです。ただし、リストのデータ構造とそのイテレータ型が循環依存であれば問題ありません。
Findbugs が示唆しているように、インターフェイスを使用して循環依存関係を解消します。つまり、円の少なくとも 1 つのタイプにインターフェイスを導入し、他のクラスがどこでもそのインターフェイスを使用するようにします。サンプルコードが必要ですか?
依存関係の逆転の原則について読むことを提案します。たとえば、依存関係の逆転の原則とは何ですか? なぜ重要なのですか? またはhttp://en.wikipedia.org/wiki/Dependency_inversion_principle
Restructure101 を使用して Junit から循環依存関係 (「もつれ」) を除去する方法についてのブログ投稿と、ローザンヌJUG からのプレゼンテーション(Icefaces からもつれを除去するために使用された方法について) があります。
循環依存が悪いかどうかの議論については、Uncle Bob's Solid Principlesを読むことをお勧めします。
免責事項: 私は Restructure101 の開発者である Headway Software で働いています。