Паттерн Singleton. Реалізація на Java
Дана тема є продовженням наступної теми:
Зміст
- 1. Структура паттерну Singleton. Рисунок
- 2. Структура паттерну Singleton з прив’язкою до Java-коду
- 3. Текст програми на Java
- Зв’язані теми
Пошук на інших ресурсах:
1. Структура паттерну Singleton. Рисунок
Загальна схема паттерну Singleton зображена на рисунку 1.
Рисунок 1. Структура паттерну Singleton
⇑
2. Структура паттерну Singleton з прив’язкою до Java-коду
У кодах мови Java особливості реалізації паттерну Singleton зображено на рисунку 2.
Створення екземпляру класу відбувається в методі Instance(). З коду клієнта екземпляр класу оператором new створити не вдасться, оскільки конструктор класу поміщається в розділ protected. З внутрішнього коду доступ до конструктора має статичний метод Instance(), який створює один єдиний екземпляр класу. Цей єдиний екземпляр і повертається методом Instance(). Щоб можна було визначати, чи створений єдиний екземпляр класу чи ні, метод Instance() оголошується як статичний (глобальний).
Рисунок 2. Структура паттерну Singleton з прив’язкою до Java-коду
⇑
3. Текст програми на Java
Нижче наводиться текст програми на мові Java, який реалізує паттерн Singleton зображений на рисунках 1, 2.
// Реалізація паттерну Singleton на Java. // Клас, що демонструє паттерн Singleton class Singleton { private static Singleton _instance=null; // посилання на екземпляр класу Singleton private int a; // внутрішні дані // Захищений конструктор класу protected Singleton() { a = 0; } // Метод, який повертає клієнту єдиний екземпляр класу Singleton public static Singleton Instance() { if (_instance==null) { _instance = new Singleton(); // створити екземпляр класу Singleton return _instance; } else return null; } // Методи доступу до даних класу public void Set(int _a) { a = _a; } public int Get() { return a; } // Метод виведення внутрішніх даних для контролю public void Print() { System.out.println("A.a = " + a); } } public class TestSingleton { public static void main(String[] args) { // Демонстрація використання паттерну Singleton // 1. Створити екземпляр класу Singleton з допомогою методу Instance() Singleton obj1 = Singleton.Instance(); if (obj1!=null) { obj1.Set(233); obj1.Print(); } else System.out.println("obj1==null"); // 2. Спроба створення другого екземпляру класу Singleton Singleton obj2 = Singleton.Instance(); if (obj2!=null) { obj2.Set(777); obj2.Print(); } else System.out.println("obj2==null"); } }
Результат виконання програми
A.a = 233 obj2==null
⇑
Зв’язані теми
- Паттерн Singleton. Огляд. Особливості застосування. Реалізація на C++
- Використання паттерну Singleton для класів, що утворюють ієрархію успадкування. Реалізації на C++, Java, C#
- Паттерн Singleton (Одинак). Особливості реалізації на C#
⇑