Синглтони можуть мати або не мати стану, і вони посилаються на об’єкти. Якщо вони не зберігають стан і використовуються лише для глобального доступу, то статичні краще, оскільки ці методи будуть швидшими. Але якщо ви хочете використовувати об’єкти та концепції ООП (поліморфізм успадкування), то одиночний варіант краще. Розглянемо приклад: java.
Реалізація Singleton може мати або статичні члени, або члени екземплярів. Статичні класи можуть містити лише статичні члени. Він може реалізувати будь-який інший інтерфейс або необхідний базовий клас. Він не може реалізувати інтерфейс або будь-який інший базовий клас.
Метод getInstance() називається фабричним методом. Це так використовується для створення одиночного класу. Це означає, що буде створено лише один екземпляр цього класу, а інші отримають посилання на цей клас.
Клас Singleton підтримує реалізацію інтерфейсу, тоді як статичні класи не можуть реалізувати інтерфейси. Клас Singleton підтримує успадкування, тоді як клас Static є запечатаним класом і тому не може бути успадкований.
Причини визначення методу main() як статичного
- Віртуальна машина Java може викликати його без необхідності створювати екземпляр класу, який його містить. …
- Оскільки C і C++ мають подібний основний метод, який служить відправною точкою для виконання програми, дотримання цієї угоди принесе тільки користь Java.