Увод у Синглетон класу на Јави

Синглетон класа ограничава креирање објекта за класу на само један у јава виртуелној машини. Такође помаже у пружању глобалне приступне тачке објекту. Овај образац дизајна најчешће се користи у кеширању, апстрактној фабрици, сечми, прототипу итд. Такође се користи у основним јава класама као што су јава.авт.Десктоп, јава.ланг.Рунтиме. У јава.ланг.Рунтиме, Јава нуди класу Рунтиме која означава тренутну Рунтиме Енвиронмент у којој се апликација покреће. Ово помаже у повезивању апликације и окружења за извршавање. Требао би постојати један објект јер је ЈРЕ јединствен. У јава.авт.Десктоп, класа Десктоп омогућава апликацијама да покрену УРИ или датотеку са подразумеваним прегледачем корисника, клијента за пошту итд. Овде такође мора да постоји само једна инстанца класе.

Како класа Синглетон функционише на Јави

Класа Синглетон може се створити на два начина.

  1. Конструктор поставите као приватни како бисте ограничили стварање објекта.
  2. Направите статички метод да бисте добили инстанцу објекта, тако да можете руковати са стварањем објекта само унутар класе.

Сада да видимо дијаграм класе УМЛ (Унифиед Моделинг Лангуаге) дијаграм класе Синглетон.

У УМЛ дијаграму класе, прва партиција представља име класе, друга партиција представља атрибуте, а трећа партиција представља методе. Такође, + означава јавне атрибуте или методе и - означава приватне атрибуте или методе. У нашем УМЛ дијаграму класе Синглетон име класе је Синглетон и има главну методу. Главна метода, гетИнстанце метода и самплеМетход су једине методе које су јавне у горњем дијаграму. Атрибут конструктора и инстанце постављен је као приватни део наше имплементације. Ова јавна главна метода тражи инстанцу и гетИнстанце га враћа у главни метод.

На основу Инстантиатион-а, једина разлика између нормалне класе Јава и класе Синглетон је та што ћемо користити конструктор у Јава класи, док ћемо у Синглетону користити гетИнстанце () методу.

Синглетон узорак дизајна је два облика.

  • Лази Инстантиатион: Стварање инстанције када је потребно
  • Еарли Инстантиатион: Израда инстанције у време учитавања.

1. Лази Инстантиатион

У Лази Инстантиатион се креира инстанца класе када је потребна. Ствара се у синхронизованој методи или блоку како би се избегли услови трке који се могу појавити у окружењу с више нити.

2. Еарли Инстантиатион

У Еарли Инстантиатион, инстанца се креира у време учитавања. Иако је ово најједноставнији приступ, недостатак је стварања инстанције без обзира да ли јој се приступа или не.

Пример лене инстанције и раног тренутка објашњен је у следећем одељку.

Имплементација класе Синглетон у Јави

Као што је горе речено, класа Синглетон може се креирати у Еарли Инстантиатион или Лази Инстантиатион.

Лази Инстантиатион

Следе кораци за спровођење Лази Инстантиатион-а

1. Поставите Цонструцтор као приватни.

На пример, креирамо класу ЛазиЦласс. Конструктор ће бити као што је приказано у наставку.

private LazyClass ()
(
)

2. Креирајте приватну статичку инстанцу за креирану класу.

private static LazyClass instance;

3. Направите статички синхронизовани метод који ће створити инстанцу класе.

public static synchronized LazyClass getInstance()
(
)

4. Методом гетИнстанце () прво проверите да ли је присутна било која инстанца или не. Ако га не пронађете, направите га. Вратите инстанцу.

if(instance == null)
(
instance = new LazyClass ();
)
return instance;

Сада ћемо то да размотримо користећи узорак кода.

//Java Program for Lazy Instantiation
public class LazyClass (
private static LazyClass instance;
//set the constructor as private
private LazyClass () ()
//Checks whether an instance is already in the getInstance method
public static synchronized LazyClass getInstance() (
//if instance is not present already, create a new one
if(instance == null) (
instance = new LazyClass ();
)
// if an instance is present, then return it
return instance;
)
//Sample method that is protected from more than one object creation
public void sampleMethod( ) (
System.out.println("sampleMethod for lazy singleton");
)
public static void main(String() args) (
LazyClass temp=LazyClass.getInstance();
temp.sampleMethod();
)
)

Излаз:

Овде, уместо да створи инстанцу у време учитавања, она се креира унутар синхронизованог блока. Да би се боље разумело, дат је и пример узорка који је заштићен од више стварања објеката.

Еарли Инстантиатион

Сада да видимо кораке за рану инстантсатацију. Слично је и с Лази инстанциатион-ом, само што не користи ниједну синхронизовану методу или блок.

1. Поставите Цонструцтор као приватни.

На пример, креирамо класу ЕарлиЦласс. Конструктор ће бити као што је приказано у наставку.

private EarlyClass () ()
(
)

2. Креирајте приватну статичку инстанцу за креирану класу.

private static EarlyClass ins = new EarlyClass();

3. Креирајте статички метод који ће створити инстанцу класе.

public static EarlyClass getInstance()
(
)

Следи узорак кода за рани тренутак.

//Java Program for Early Instantiation
public class EarlyClass (
//Create an instance of the class at load time
private static EarlyClass ins = new EarlyClass();
//set the constructor as private
private EarlyClass () ()
//A static method to get the instance
public static EarlyClass getInstance() (
return ins ;
)
//A sample method that is protected from more than one object creation
public void sampleMethod() (
System. out .println("sampleMethod for Early singleton");
)
//Main method
public static void main(String() args) (
EarlyClass tmp = getInstance ();
tmp.sampleMethod();
)
)

Излаз:

У горњем програму креира се инстанца у времену учитавања и враћа се методом гетИнстанце (). Поред тога, Конструктор је постављен као приватни као део појединачне инстанције.

Уштеда меморије је главна предност употребе овог објекта јер се објект поново користи и не ствара се поново и поново.

Закључак

У овом документу смо објаснили како функционише класа Синглетон уз помоћ УМЛ дијаграма, алгоритма и узорка кода класе. Класа Синглетон користи се када нам је потребан само један објект за класу и глобална приступна тачка том објекту. На основу захтева могу се користити два облика као што су Еарли инстантиатион и Лази Инстантиатион.

Препоручени чланци

Ово је водич за Синглетон класу на Јави. Овде смо разговарали о томе како класа синглетон делује у Јави заједно са имплементацијом која укључује лену инстанција и рану инстанцизацију. Можете и да прођете кроз друге наше предложене чланке да бисте сазнали више -

  1. Шта је узорак дизајна у Јави?
  2. Сажетак класе на Јави
  3. Јава напомене
  4. БордерЛаиоут у Јави
  5. ЈРЕ вс ЈВМ | Топ 8 разлика са (Инфограпхицс)
  6. Како радити статички метод у ЈаваСцрипт-у?

Категорија: