У Јави, синглетон класа је класа која у датом тренутку може имати само једну инстанцу. То је један од пет образаца креативног дизајна у Јави који помаже у напору без напора . Кроз медиј овог чланка даћу вам јасан увид у то шта је синглетон класа у Јави и како је можете створити.
Испод су теме које ћу обрађивати у овом чланку:
Хајде да почнемо.
Шта је Синглетон класа у Јави?
Лаички речено, Синглетон класа у Јави је класа која омогућава приступ њој преко појединачне инстанце истовремено. Овај образац дизајна служи за ограничавање непотребне инстанције класе и осигуравање да постоји само једна постоји у било ком тренутку по ЈВМ инстанци. Дакле, са овим узорком, било која класа која је дефинисана као Синглетон има само једну инстанцуса глобалном тачком приступа. За разлику од нормалних класа, једнокрачна класа се не уништава на крају животног циклуса апликације.
пример прегледа модела модела Јава
Али зашто нам је уопште потребна класа Синглетон?
Па, ограничавањем креирања инстанце класе штеди меморијски простор јер се сада објекат неће креирати сваки пут када се направи нови захтев. Уместо тога, један објекат ће се користити више пута. То је разлог зашто се образац Синглетон у Јави углавном користи и апликација база података. У основи се користи за евидентирање, кеширање, удруживање нити, подешавања конфигурације и још много тога.
Надам се да вам је јасан концепт класе Синглетон у Јави. Дакле, идемо даље у овомеЧлан Синглетон Цласс у Јави и погледајте како су створени.
Начини дизајнирања Јава Синглетон класе
Да бисте направили једноструку класу у Јави, потребне су вам следеће три ствари:
- статични члан класе
- приватни конструктор
- статичка фабричка метода
Будући да Јава омогућава програмерима да истражују своје хоризонте, постојена бројне начине на које можете дизајнирати Синглетон класу. Испод сам навео најпопуларније.
план праћења и контроле пројекта
- Метод нестрпљиве иницијализације
- Метод лење иницијализације
- Метода сигурног навоја навоја
- Лијена иницијализација методом двоструког закључавања
- Метод лењег оптерећења
- Метода иницијализације статичког блока
Заронимо сада један за другим дубље у сваки од ових приступа.
1. Метод нестрпљиве иницијализације
Ово је најлакши начин креирања класе Синглетон где се инстанца креира у тренутку учитавања класе. Да бисте креирали синглетон класу помоћу ове методе, морате следити доле наведене кораке:
- Прогласите конструктор приватним.
- Следећи корак је стварање приватног члана класе за ову Синглетон класу.
- Сада треба да дефинишете фабричку методу која ће се користити за враћање објекта ваше класе, који смо креирали као инстанцу члана класе.
- Можете чак прогласити статичног члана јавним ако желите директно приступити овој статичкој инстанци.
Сада, да видимо како да их применимо.
// Еагер Инитиализатион јавна класа ЕагерСинглетон {привате статиц финал ЕагерСинглетон ИНСТАНЦЕ = нев ЕагерСинглетон () привате ЕагерСинглетон () {} публиц статиц ЕагерСинглетон гетИнстанце () {ретурн ИНСТАНЦЕ}}
Ако видите код, можете приметити да сваки пут када правимо инстанцу објекта који користимогетИнстанце ()метода, а не позивање на класу градитељ .Али има своје недостатке. Ако користите ову методу за израду једноструке класе, тада ће се створити инстанца без обзира на то да ли је апликација користи или не.
Дакле, кренимо напред и видимо још један начин стварања синглетон класе у Јави.
2. Метод лење иницијализације
Ова метода се назива лења иницијализација, јер одлаже стварање инстанце класе до њене прве употребе. Оно што мислим је да се овом методом објекат креира само ако је потребан. Помаже у избегавању непотребног стварања . Да бисте на овај начин дизајнирали синглетон класу, морате следити доле наведене кораке:
- Пре свега, прогласите конструктор приватним.
- Тада треба да креирате приватну статичку инстанцу за ову класу, али још увек не морате да је инстанцирате.
- На крају, креирајте фабричку методу која ће прво проверити да ли је члан инстанце нулл или не. Ако не, створиће инстанцу класе синглетон за вас и вратити је.
Испод код показује како то извести.
// Лази Инитиализатион јавна класа ЛазиСинглетон {привате статиц ЛазиСинглетон ИНСТАНЦЕ = нулл привате ЛазиСинглетон () {} публиц статиц ЛазиСинглетон гетИнстанце () {иф (ИНСТАНЦЕ == нулл) {синцхронизед (ЛазиСинглетон.цласс) {ИНСТАНЦЕ = нев ЛазиСинглетон ()}} повратак ИНСТАНЦЕ}}
3. Сигурна нит навоја Метод
Али горњи приступ може створити неке проблеме у истовременим сценаријима. Пошто се једнокраки узорак углавном користи са више нитима и аковише нити истовремено улази у услов иф то може покренути проблеме. Да бисмо то избегли, покушавамо да направимо класу синглетон безбедну за нит синхронизацијом глобалног метода приступа. Ово осигурава да само једна нит извршава ову методу у било ком тренутку. Погледајте доњи код да бисте видели имплементацију:
// Тхреад Сафе Синглетон јавна класа ТхреадСафеСинглетон {приватни статички ТхреадСафеСинглетон ИНСТАНЦЕ приватни ТхреадСафеСинглетон () {} јавни статички синхронизовани ТхреадСафеСинглетон гетИнстанце () {иф (ИНСТАНЦЕ == нулл) {ИНСТАНЦЕ = нев ТхреадСафеСингтон
Али с времена на време овај приступ такође може постати врло гломазан као и сваки пут када се метода користитреба позвати да се брава ослободи пре него што метода може да је користи. То резултира успоравањем процеса и води нас ка следећем приступу који јеЛази Инитиализатион витх Доубле Лоцк.
4. Лијена иницијализација са двоструким закључавањем Метод
У овом приступу не синхронизујемо методе. Уместо тога, код за креирање објекта омотавамо синхронизованим блоком.Можете то рећи тако што ћете претходно проверити закључавање нитисмањује број набавки брава. Овај приступ обично резултира побољшањем перформанси апликације. Погледајте доњи код да бисте видели како се то ради.
// Лази Инитиализатион витх Доубле Лоцк јавна класа ЛазиДоублеЛоцкСинглетон {привате статиц ЛазиДоублеЛоцкСинглетон ИНСТАНЦЕ = нулл привате ЛазиДоублеЛоцкСинглетон () {} публиц статиц ЛазиДоублеЛоцкСинглетон гетИнстанце () {иф (ИНСТАНЦЕ == нулл) {синцхронизед.цлассинго. нулл) {ИНСТАНЦЕ = нев ЛазиДоублеЛоцкСинглетон ()}}} ретурн ИНСТАНЦЕ}}
5. Метод лењег оптерећења
Овај метод заснован је на ЈСЛ (Јава Лангуаге Специфицатион) и према овоме учитаће чланове статичких података само када су потребни. Дакле, када се ваша синглетон класа учита у ЈВМ, не креира се ниједна инстанца. Даље, током извршавања програма, глобални метод се позива редним редоследом. Овим методом не морате експлицитно синхронизовати статички гетИнстанце () да бисте га учитали и иницијализовали. Члан статичне класе позваће се у правилном редоследу, остатак истовремених позива глобалне методе враћају се истим редоследом, без потребе да се изврши режија синхронизације.
шта је аутобокинг у јави
Испод је код за извођење истог.
// Лази Лоад Метход јавна класа ЛазиЛоадСинглетон {привате ЛазиЛоадСинглетон () {} привате статиц цласс СинглетонЦлассХолдер {статиц финал Вар ИНСТАНЦЕ = нев ЛазиЛоадСинглетон ()} публиц статиц ЛазиЛоадСинглетон гетИнстанце () {ретурн СинглетонЦлассХолдер.ИНСТАНЦЕ}}
6. Метода иницијализације статичког блока
Овај метод стварања синглетон класе у Јави јеслично жељном начину иницијализације. Једина разлика је у томе што се инстанца за ову класу креира у статичком блоку функционалност.
// Иницијализација статичког блока јавна класа СтатицБлоцкСинглетон {привате статиц СтатицБлоцкСинглетон ИНСТАНЦЕ привате СтатицБлоцкСинглетон () {} // руковање изузецима у статичком блоку статиц {три {ИНСТАНЦЕ = нев СтатицБлоцкСинглетон ()} цатцх (Екцептион е) {тхров нев РунтимеЕкцептион ('Изузетак настао приликом креирања класе Синглетон ')}} јавни статични СтатицБлоцкСинглетон гетИнстанце () {ретурн ИНСТАНЦЕ}}
Ово нас доводи до краја овог чланка о класи Синглетон у Јави. Ако желите знати више о Јави, можете се обратити нашој .
Сад кад сте схватили шта је Синглетон класа у Јави, погледајте Едурека, поуздана компанија за учење на мрежи са мрежом од више од 250.000 задовољних ученика раширених широм света. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА дизајниран је за студенте и професионалце који желе да буду Јава програмер. Курс је дизајниран да вам пружи почетну предност у Јава програмирању и обучи вас како за основне тако и за напредне Јава концепте, заједно са разним Јава оквирима попут Хибернате & Спринг.
Имате питање за нас? Молимо вас да га помињете у одељку за коментаре овог чланка „Синглетон Цласс ин Јава“ и јавићемо вам се што је пре могуће.