getResource () другого класса - PullRequest
       13

getResource () другого класса

2 голосов
/ 06 августа 2009

У меня есть класс A, который получает файл конфигурации, выполняя:

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

Теперь я создал новый класс B, которому нужен cfgFile. Прямо сейчас я делаю:

A.class.getResource("cfgFile");

Но это не так.

Я был готов создать новый класс, что-то вроде ABCfg и добавить cfgFile в путь ресурсов, но я не уверен, что это лучший способ.

Какой лучший способ сделать это?

Спасибо за чтение!

Ответы [ 2 ]

3 голосов
/ 06 августа 2009

Вы можете инкапсулировать это, заключив getClass().getResource() в новый статический метод в A. Таким образом, у вас есть возможность изменить реализацию в будущем, не затрагивая вызывающий код.

Если у A есть другие обязанности по предоставлению информации о конфигурации, вам лучше создать новый класс именно для этого. Инкапсуляция вызова getResource() все же стоит сделать.

1 голос
/ 06 августа 2009

Возможно, вам следует создать какой-то класс Configuration или предоставить другой способ получения данных конфигурации. B не должен полагаться на знание, где находится конфигурация A, или даже на то, что ему нужна конфигурация A. Я предлагаю вам взглянуть на Dependency Injection .

Например, B может быть создан с конфигурацией, которая ему необходима для выполнения своей работы, вместо того, чтобы назначать B ответственным за знание, где найти его конфигурацию. Последний подход приводит к созданию тесно связанного кода, который становится все труднее тестировать.

...