2009-08-06 22 views
2

ich eine Klasse A bin, die dabei eine Konfigurationsdatei bekommt:getResource() einer anderen Klasse

this.getClass().getResource("cfgFile"); 

Jetzt habe ich eine neue Klasse B, die A der CFGFILE braucht. Gerade jetzt mache ich:

A.class.getResource("cfgFile"); 

Aber es fühlt sich nicht richtig an.

Ich war bereit, eine neue Klasse zu erstellen, etwas wie ABCfg und die cfgFile zu seinem Ressourcenpfad hinzuzufügen, aber ich bin mir nicht sicher, es ist der beste Weg.

Was ist der beste Weg, dies zu tun?

Danke fürs Lesen!

Antwort

1

Sie sollten wahrscheinlich eine Art von Konfigurationsklasse erstellen oder eine andere Möglichkeit zum Abrufen von Konfigurationsdaten bereitstellen. B sollte sich nicht darauf verlassen zu wissen, wo die Konfiguration von A ist, oder sogar, dass es die Konfiguration von A braucht. Ich schlage vor, Sie schauen in Dependency Injection.

Zum Beispiel könnte B mit der Konfiguration erstellt werden, die es benötigt, um seine Aufgabe zu erledigen, anstatt B dafür verantwortlich zu machen, zu wissen, wo seine Konfiguration zu finden ist. Der letztere Ansatz führt zu einem eng gekoppelten Code, der zunehmend schwieriger zu testen ist.

3

Sie könnten dies einkapseln, indem Sie getClass().getResource() in einer neuen statischen Methode auf A umhüllen. Auf diese Weise haben Sie die Flexibilität, die Implementierung in der Zukunft zu ändern, ohne den aufrufenden Code zu beeinträchtigen.

Wenn A andere Verantwortlichkeiten für die Bereitstellung von Konfigurationsinformationen hat, sollten Sie besser eine neue Klasse erstellen. Das Einbetten des getResource()-Aufrufs lohnt sich jedoch immer noch.

Verwandte Themen