У цьому підручнику ми дізнаємося про шаблон дизайну-синглону та про те, як застосувати його в Java за допомогою прикладів.
Singleton - це шаблон дизайну, а не особливість, властива Java. Це забезпечує створення лише одного екземпляра класу.
Шаблон дизайну схожий на нашу бібліотеку коду, яка включає різні методи кодування, якими користуються програмісти з усього світу.
Java Сінглтон
Ось як ми можемо використовувати синглтони в Java.
- створити
private
конструктор, який обмежує створення об'єкта поза класом - створити
private
атрибут, який посилається на синглтон-об'єкт. - створити
public static
метод, який дозволяє нам створювати та отримувати доступ до об’єкта, який ми створили. Усередині методу ми створимо умову, яка обмежує нам можливість створювати більше одного об’єкта.
Ось приклад.
class SingletonExample ( // private field that refers to the object private static SingletonExample singleObject; private SingletonExample() ( // constructor of the SingletonExample class ) public static SingletonExample getInstance() ( // write code that allows us to create only one object // access the object as per our need ) )
У наведеному вище прикладі
private static SingletonExample singleObject
- посилання на об'єкт класу.private SingletonExample()
- приватний конструктор, який обмежує створення об’єктів поза класом.public static SingletonExample getInstance()
- цей метод повертає посилання на єдиний об’єкт класу. Оскільки метод статичний, до нього можна отримати доступ, використовуючи ім'я класу.
Використання класу Singleton
Однотонні можна використовувати під час роботи з базами даних. Вони можуть бути використані для створення пулу з'єднань для доступу до бази даних при повторному використанні одного і того ж з'єднання для всіх клієнтів. Наприклад,
class Database ( private static Database dbObject; private Database() ( ) public static Database getInstance() ( // create object if it's not already created if(dbObject == null) ( dbObject = new Database(); ) // returns the singleton object return dbObject; ) public void getConnection() ( System.out.println("You are now connected to the database."); ) ) class Main ( public static void main(String() args) ( Database db1; // refers to the only object of Database db1= Database.getInstance(); db1.getConnection(); ) )
Коли ми запускаємо програму, результат буде:
Тепер ви підключені до бази даних.
У наведеному вище прикладі
- Ми створили базу даних однокласного класу.
- DbObject - це поле типу класу. Це буде стосуватися об'єкта класу База даних.
- Приватний конструктор
Database()
запобігає створенню об'єкта поза класом. - Статичний метод типу класу
getInstance()
повертає екземпляр класу до зовнішнього світу. - У класі Main ми маємо змінну типу класу db1. Ми телефонуємо
getInstance()
за допомогою db1, щоб отримати єдиний об’єкт бази даних. - Доступ до методу
getConnection()
можливий лише за допомогою об’єкта Бази даних. - Оскільки База даних може мати лише один об'єкт, усі клієнти можуть отримати доступ до бази даних через одне з'єднання.
Важливо зазначити, що існує лише кілька сценаріїв (наприклад, реєстрація), коли одиночні елементи мають сенс. Навіть підключення до бази даних зазвичай не повинно бути єдиним.
Ми рекомендуємо вам повністю уникати використання одиночних літер, якщо ви не впевнені, використовувати його чи ні. Дізнайтеся більше: Що такого поганого в Сінглтоні?