У меня небольшой вопрос по оптимизации. Что лучше всего:
- Использование статической карты в классе и взаимодействие с ней с помощью статических методов.
public class Manager {
public static Map<String, Long> ids = new HashMap<>();
public static Long getId(String name) {
return ids.get(name);
}
}
public class RandomClass {
public void randomMethod(String name) {
Manager.getId(name);
}
}
- Использование только одного экземпляра объекта-менеджера, который сохраняется в единственном экземпляре MainClass, и взаимодействие с картой с помощью этого уникального экземпляра объекта-менеджера.
public class Manager {
public Map<String, Long> ids = new HashMap<>();
public Manager() {}
public Long getId(String name) {
return ids.get(name);
}
}
public class MainClass {
private static MainClass instance;
private Manager manager;
public void initialize() {
manager = new Manager();
}
public static MainClass getInstance() {
return instance;
}
public Manager getManager() {
return manager;
}
}
public class RandomClass {
public void randomMethod() {
MainClass.getInstance().getManager().getId(name);
}
}
Заранее благодарю за ответ.
Да "красивее", но дороже ли для Java? Я имею в виду, он более оптимизирован или менее оптимизирован, чем использование статической карты? Спасибо за ваш быстрый ответ.
Это не имеет значения. И уж точно разница незначительная.
Простое эмпирическое правило: вы не делаете вещи статичными, если в этом нет необходимости. См. Это как нарушение. Это не первый вариант дизайна, но последний.




Второй вариант чище, потому что вы можете правильно вводить зависимости и, следовательно, тестировать код без особых усилий.