Метою Сінглтона є контроль створення об'єкта, обмежуючи число obejcts тільки один. Оскільки існує тільки один екземпляр Singleton, будь-якого примірника поля одноточечного відбуватиметься тільки один раз в класі, так само, як статичні поля. Одинаки часто контролюють доступ до таких ресурсів, як підключення до баз даних або гнізда.
Наприклад, якщо у вас є ліцензія тільки для одного з'єднання для бази даних або драйвер JDBC має проблеми з багатопоточність, то Singleton гарантує, що тільки одне з'єднання зроблено або що тільки один потік може отримати доступ до з'єднання в той час.
Реалізація Singletons
Найпростіший реалізація складається з приватного конструктора і поле для утримання його результат, і статичний метод аксессор з таким ім'ям, як GetInstance ().
Приватне поле може бути призначено в межах статичного ініціалізатор блоку або, простіше кажучи, використовуючи ініціалізатор. Метод деИпзЬапсе () (який повинен бути публічним), то просто повертає цей екземпляр -
Ось основний файл програми, де ми створимо об'єкт одноелементна:
Це зробить наступний результат -
Після реалізації показує класичний шаблон проектування Singleton:
Клас ClassicSingleton підтримує статичну посилання на самотнього одноелементний екземпляр і повертає посилання з методу статичної деИпзЬапсе ().
Тут клас ClassicSingleton використовує техніку, відому як ледачого конкретизації для створення одноелементна; в результаті, одноелементний екземпляр не буде створено, поки метод деИпзЬапсе () не викликається в перший раз. Цей метод гарантує, що одноелементні екземпляри створюються тільки тоді, коли це необхідно.