Статические методы и статические переменные, плохая практика проектирования? [Дубликат]

Возможный дубликат:

Почему статические переменные считаются злыми?

Изучив объектно-ориентированное программирование и дизайн в колледже несколько лет назад, я помню, как лекторы очень сердились на людей, использующих статические переменные или статические методы, так как они описывают статичность как очень плохую конструкцию.

Я понимаю, что это что-то типа статического, что-то, что приобретает глобальный характер »видение» то есть к нему может получить доступ все что угодно.

Правильно ли мое понимание? Есть ли информация об использовании статики, которая делает его плохим? и есть ли способ избежать использования статических переменных или методов в вашем коде?

Кстати, я знаю, что статические для основного метода является необходимым условием для успешной работы приложения.

 assylias19 нояб. 2012 г., 13:38
возможный дубликатПочему статические переменные считаются злыми? - Примечание: ссылка содержит только статические переменные адреса. В статических методах нет ничего плохого - см. Например:stackoverflow.com/questions/2671496/...

Ответы на вопрос(4)

и нет другого способа сделать это, являетсясинглтон

Метод доступа для синглтона, особенно тот, который используетленивая инициализациятребуется статический метод.

Ничего нет "плохой" о синглетонах.

 Shubham Chaudhary03 сент. 2015 г., 14:39
Вы можете немного прояснить это?

Нет ничего плохого в статических переменных или методах. Это'Просто с помощью ООП вы хотите связать как можно больше поведения с объектами, а это означает использование методов и переменных экземпляра. Сказав это, есть конкретные случаи, когда необходимы статические члены: конструкторы (как вы упоминаете) и шаблон Singleton являются хорошими примерами.

 Blasanka13 авг. 2017 г., 16:37
В качестве примера это нарушает концепцию полиморфизма

Статические переменные плохие, если они не представляютсинглтон» какой-то, и если они делают, то в ООП это "Лучше создать реальный синглтон-класс (особенно если вы можете использовать enum singleton). Помимо прочего, статические переменные затрудняют многопоточное программирование и могут делать это даже в однопоточном программировании, где вы "неожиданно" нужно два экземпляра класса со статическими полями.

С другой стороны, статические методы обычно хороши, если они не обращаются к статическим данным, а работают только с их аргументами. Конечно, если вы заметили, у вас естьstatic void MyStaticUtils.operateOnFoo(Foo foo), Затем это'гораздо лучше иметь нестатичныйvoid Foo.operate() метод. Но иногда ты неОн не может позволить себе добавлять методы в существующий класс и должен работать с экземплярами, возвращаемыми существующими методами, и тогда статические служебные методы, безусловно, являются хорошим выбором.

Решение Вопроса

static в основном используется для доступа к членам класса без создания экземпляра класса. Как вы знаете, почему мы пишемpublic static void main() просто bcoz во время выполнения jvm может получить доступ к этому методу без создания объекта класса и запуска вашей программы.

Это зависит от вашего требования: как вы используете или говорите, как объявлять член класса с помощью спецификатора доступа как private, public, default и защищать для уровня доступа, в то время как static должен был сделать это статическим с уровнем доступа.

Без static вы должны объявить ваш член как public или если вы наследуете свой класс, то make также будет защищен. Как и в том же пакете, вы определяете класс, а затем просто статический для наследования класса. А для использования без класса наследования вам нужно создать объект этого класса, а затем вы можете получить доступ к его членам (обратите внимание, это на основе спецификатора доступа)

вот ссылка ниже для более подробной информации

http://xahlee.info/java-a-day/access_specifiers.html

http://www.javabeginner.com/learn-java/introduction-to-java-access-modifiers

Ваш ответ на вопрос