1

Почему Singleton он же одиночке - не статический класс? Почему это уникальный экземпляр класса, а не просто класс со статическими полями и методами. Разве результат не один и тот же (нечто, представляющие себя в единственном числе)?

Дополнительно: Нужен класс с методом, который выполняет определённую проверку некоего файла. Что предпочтительней: создать статический класс со статическим методом, который принимает параметром метода файл и проверяет его или же создать класс (которому при создании объекта в конструкторе передается файл), имеющий метод, вызываемый у экземпляра объекта, проверяющий этот файл.

kezeze
  • 175
  • Статический класс подразумевает то, что у него все методы статические. У синглтона - могут быть и обычные методы – Алексей Шиманский Jul 05 '19 at 06:22
  • @СергейМишин Ну это понятно. Но если объект класса (синглтон) всё равно в одном экземпляре и все его данные в одном экземпляре, зачем тогда нужен этот экземпляр, если статика тоже в единственном числе. – kezeze Jul 05 '19 at 06:26
  • шшшшшшшшшшшшто? – Алексей Шиманский Jul 05 '19 at 06:27
  • 1
    Со временем может появиться необходимость создавать другие экземпляры этого класса. Тогда он полностью безболезненно эволюционирует в обычный класс. Если бы он был статическим классом, и к этому моменту было бы написана уже не одна тысяча строк кода, для этого потребовались бы колоссальные изменения во всем проекте. – extrn Jul 05 '19 at 06:35

1 Answers1

1

Главная причина сделать динамический экземпляр с динамическими методами - это возможность наследования.

Статические методы НЕ НАСЛЕДУЮТСЯ.

Поэтому, при возникновении необходимости вариативного создания синглтоновского экземпляра в зависимости от входящих параметров более предпочтительна реализация с динамическим созданием экземпляра.

Для маленького проекта с простой функциональностью - совершенно без разницы как делать чисто статические или динамические. Но если вдруг понадобится расширять проект, то реализация с динамическими методами более гибкая.