0

Ich verwende derzeit das Factory-Muster, die die JXErrorPane-Klasse aufrufen würde. Ich möchte sicherstellen, dass keine andere Klasse JXErrorPane direkt aufrufen kann. Ich habe versucht, die JDepend-Bibliothek, aber es hat nicht funktioniert, wie ich es gehofft hatte, da es nur für Pakete funktioniert, aber es gibt andere Klassen im Paket, die ich nicht verschieben möchte.Wie verbiete ich die Verwendung einer einzigen Java-Klasse

Gibt es eine Möglichkeit zu verbieten andere Klassen JXErrorPane-Klasse mit Ausnahme der Factory-Klasse aufrufen? Kann dies durch Konfiguration in IDE wie Eclipse erfolgen oder ist ein expliziter Test notwendig?

Danke.

(Die Codebase ist sehr groß, da ich die Werke anderer Leute erweitere. JXErrorPane ist eine Swing-Klasse, sie wird nur JXErrorPane.showDialog() geschrieben. Wie kann ich sicherstellen, dass nur eine Klasse - die Factory JXErrorPane verwendet und alle anderen Klassen verbieten die Verwendung von JXErrorPane)

+0

Wo ist Ihr Code? – Mostafiz

+2

Beginnen Sie mit einem 'privaten' Konstruktor, eine andere Idee besteht darin, nur die' Schnittstelle' der API freizulegen. – MadProgrammer

Antwort

0

Ich denke, mit "call" meinen Sie "create", dh. Rufen Sie den Konstruktor auf.

Nein, Sie haben nur die 4 Java-Zugriffstypen public, protected, private und "default", die kein Schlüsselwort haben. heute

ein aufstrebendes Muster ist das Werk in der Klasse selbst als statische Methode aufzunehmen und halten Bau privat:

public class MyClass { 
    private MyClass() { /* private constructor */ } 

    // factory method 
    public static MyClass create() { 
     return new MyClass(); 
    } 
} 
+0

JXErrorPane ist eine Swing-Klasse. Gibt es eine Möglichkeit, nur eine Klasse zu begrenzen? – user3512219

+0

Nein, dies kann nur in Ihrem eigenen Code erfolgen. – mtj

0

ich einen Weg gefunden, um dieses Problem von dieser Website zu lösen: http://www.eclipsezone.com/eclipse/forums/t53736.html

Der JXErrorPane war im Efeu-Build-Pfad, also habe ich den Efeu-Build-Pfad konfiguriert, jetzt lehnt er jetzt die Verwendung von JXErrorPane ab.

Ich bin jedoch immer noch nicht sicher, wie man die Fabrikklasse auf JXErrorPane zugreifen lassen kann.

+0

Gutachter: Dies ist eine Antwort. Es kommt nicht auf den Link an. Es ist keine vollständige Antwort, aber es kann für zukünftige Besucher noch nützlich sein. –

Verwandte Themen