этический вопрос здесь.
Я планирую использовать несколько классов менеджера в моем новом проекте, которые будут выполнять различные задачи по всему проекту.Эти классы являются синглетонами, но требуют построения на основе параметров.
Относительно того, когда и где эта конструкция должна произойти, у меня смешанные чувства.Пока у меня есть эти опции:
Опция A
Легко просто передать эти параметры методу getInstance
, имея значение по умолчанию null
.При первом вызове будут использоваться параметры, и любые дополнительные вызовы полностью их игнорируют.
Хотя это работает, это выглядит довольно нелогичным по следующим причинам:
Это делает документацию неясной. getInstance
'первый параметрдолжно быть типа Collection
, но может быть null
... что здесь происходит?Вы можете утверждать, что запись строки об этом в описании прояснит это, но я бы предпочел, чтобы разъяснение было ненужным.
Считать ошибочным пропуск getInstance
любые параметры конструкции. Это связано с тем, что имя метода не дает явного указания на конструкцию, что делает неясным, что это произойдет.
Опция B
Я думаю о setup
методе.Этот метод принимает все параметры, вызывает конструктор класса и изменяет внутреннее состояние класса на initialized
.
При вызове метода getInstance
до setup
он выдаст NotInitializedException
.После вызова установки любые дополнительные вызовы setup
приведут к PreviouslyInitializedException
.
После вызова setup
станет доступным getInstance
.
Лично этовариант больше нравится мне.Но это кажется чрезмерным.
Какой вариант вы предпочитаете?И почему?