Использование экземпляра одноэлементного класса в качестве переменной уровня класса приемлемо?

1

У меня есть одноэлементный класс. MsgLog

Можно ли использовать этот класс, как показано ниже? Что-то не так с этим?

public class SomeBean {
   MsgLog log = MsgLog.getInstance(); // IS THIS FINE?

   // some code
   private void someMethod() {
        log.printIt(" test ");
   }
}
Теги:
class
variables
singleton

2 ответа

1
Лучший ответ

Да, это прекрасно. Однако вы должны сделать это private static final окончанием.

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

Но много кода обрабатывает журнал специально, к лучшему или к худшему.

  • 0
    Спасибо за разъяснения. Но я не понял, почему это должно быть частным? Не могли бы вы уточнить?
  • 2
    Потому что ничто вне класса не должно заботиться о том, как этот класс ведет свою регистрацию. (Всегда используйте максимально ограниченный доступ; ослабить ограничения легче, чем ужесточить их.)
Показать ещё 4 комментария
1

Да, это вполне приемлемо, и большинство из них утверждают, что это правильный способ использования класса Logger. Вот еще один ответ, который объясняет это немного лучше:

qaru.site/questions/574586/...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню