Umgang mit einer zirkulären Abhängigkeit

8

Ich frage mich, ob jemand Ratschläge geben kann, um eine zirkuläre Abhängigkeit zwischen zwei Klassen in Java zu brechen! FindBugs schlägt die Verwendung von Schnittstellen vor, also frage ich mich, ob jemand gute Erfahrungen mit dieser Art von Problem gemacht hat!

Vielen Dank im Voraus!

    
tropicana 30.03.2011, 17:52
quelle

3 Antworten

6

Kreisförmige Abhängigkeiten sind nicht immer zu vermeiden. Ich würde sie im großen vermeiden, aber in kleinen engen Ecken eines Systems halten. In der großen, d. H. Wenn Datenzugriffsschicht und die Darstellungsebene der J2EE-App zirkulär abhängig sind, würde ich sagen, dass das eine schlechte Sache ist, weil es bedeutet, dass alles auf einmal kompiliert werden muss und Testen ein Albtraum ist. Es ist jedoch kein Problem, wenn eine Listendatenstruktur und ihr Iteratortyp kreisabhängig sind.

Wie Findbugs vorschlägt, verwenden Sie Schnittstellen, um eine zirkuläre Abhängigkeit zu unterbrechen. Stellen Sie eine Schnittstelle für mindestens einen Typ des Kreises vor und lassen Sie die anderen Klassen die Schnittstelle überall benutzen. Benötigen Sie Beispielcode?

    
jmg 03.04.2011 11:02
quelle
5

Lies etwas über das Abhängigkeitsinversionsprinzip, z.B. Was ist die Abhängigkeit Inversion Prinzip und warum ist es, wichtig? oder Ссылка

    
andersoj 31.03.2011 11:56
quelle
2

Es gibt einen Blogbeitrag hier wie Restructure101 verwendet wurde, um zyklische Abhängigkeiten zu entfernen, "Tangles", von Junit und einem Präsentation von der JUG aus Lausanne, wie es verwendet wurde, um Verwicklungen von Icefaces zu entfernen.

Was die Debatte darüber angeht, ob zyklische Abhängigkeiten schlecht sind, empfehle ich, Onkel Bobs solide Grundsätze zu lesen.

Disclaimer: Ich arbeite für Headway Software, die Entwickler von Restructure101.

    
pth - Structure101 03.04.2011 10:40
quelle

Tags und Links