Java 8, как исходя из значения некоторой переменной определить принцип работы части кода?

Представим у нас есть программа, которая при запуске читает конфиг и устанавливает внутри себя параметры. у нас есть boolean переменная в конфиге, в зависимости от значения которой программа определяет какую функцию использовать. это можно решить через абстрактный класс и двух его классов реализующих, вызывая в них функцию, но может есть более изящный подход? чтобы не каждый раз проверять эту переменую, а вообще выбросить её, чтобы функция вырбалась изходя из значения перемнной раз и навсегда


Ответы (1 шт):

Автор решения: Roman-Stop RU aggression in UA

Проверяйте опцию один раз при старте приложения:

interface MyFunction() {
    void f();
}

class OptionEnabled implements MyFunction {
    public void f() {
        // реализация для варианта, когда опция включена
    }
}

class OptionDisabled implements MyFunction {
    public void f() {
        // реализация для варианта, когда опция выключена
    }
}

// При старте программы выбираем функцию раз и навсегда

final MyFunction function = null;

if (optionEnabledInConfig()) {
    function = new OptionEnabled();
} else {
    function = new OptionDisabled();
}

// далее по коду используете function

function.f();

Естественно, интерфейс и классы нужно назвать, чтоб они отражали суть происходящего. Тут я назвал их абстрактно, так как они фигурируют в вопросе.

→ Ссылка