Java Singleton (с пример)

В този урок ще научим за модела за проектиране на единичен модел и как да го приложим в Java с помощта на примери.

Singleton е по-скоро модел на дизайн, отколкото функция, специфична за Java. Той гарантира, че е създаден само един екземпляр на клас.

Шаблонът на дизайна е като нашата библиотека с кодове, която включва различни техники за кодиране, споделяни от програмистите по целия свят.

Java Singleton

Ето как можем да използваме единични файлове в 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()връща екземпляра на класа към външния свят.
  • В основния клас имаме променлива тип db1. Обаждаме се getInstance()с помощта на db1, за да получим единствения обект на базата данни.
  • Методът getConnection()може да бъде достъпен само с помощта на обекта на базата данни.
  • Тъй като Базата данни може да има само един обект, всички клиенти имат достъп до базата данни чрез една връзка.

Важно е да се отбележи, че има само няколко сценария (като регистриране), при които единичните точки имат смисъл. Дори връзката с база данни обикновено не трябва да бъде единична.

Препоръчваме ви да избягвате напълно използването на единични символи, ако не сте сигурни дали да го използвате или не. Научете повече: Какво е толкова лошото в Сингълтън?

Интересни статии...