Когда мы должны использовать статическую карту?

У меня небольшой вопрос по оптимизации. Что лучше всего:

- Использование статической карты в классе и взаимодействие с ней с помощью статических методов.

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);
    }

}

Заранее благодарю за ответ.

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

luk2302 03.08.2018 14:07

Да "красивее", но дороже ли для Java? Я имею в виду, он более оптимизирован или менее оптимизирован, чем использование статической карты? Спасибо за ваш быстрый ответ.

MrTigreroux 03.08.2018 14:10

Это не имеет значения. И уж точно разница незначительная.

luk2302 03.08.2018 14:12

Простое эмпирическое правило: вы не делаете вещи статичными, если в этом нет необходимости. См. Это как нарушение. Это не первый вариант дизайна, но последний.

GhostCat 03.08.2018 14:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
253
0

Другие вопросы по теме