Hemmelere salam, javaRush!
Bu gün size dizaýn nagşy (ýeke) hakda aýdaryn
Singleton
.
Maksat: diňe BIR obýekt boljak synp dörediň. Diýmek, näçe gezek girilse-de, ilkinji gezek döredilen şol bir obýekt yzyna gaýtarylar. Bu amatly zat we köp ýerlerde zerur, onuň çarçuwada durmuşa geçirilmegi hiç zat däl.
Arza:
- Mysal üçin, maglumat bazasyny taslama we oňa birikmek üçin jogapkär synp bilen birikdirmeli. Baglanyşyk bir gezek döredilýär we ony täzeden döretmegiň zerurlygy ýok
Application settings
- programma üçin zerur bolan birikme sazlamalary üçin jogapkär synp: maglumat bazasynyň eýesi we port we ş.m. Bir gezek döredilýär we programmanyň işiniň dowamynda ulanylýar.
- Mentionatlamadyk başga-da köp mysal bar, şonuň üçin teswirleriňizi teswirleriňize ýazyň! =)
Bu girişden soň, düşünşim ýaly, bu synpyň mysalyny görkezip bilersiňiz: (Her birimiziň muny durmuşa geçirip biljekdigimize ynanýaryn) Ine, iň ýönekeý mysal, konstruktory şahsylaşdyranymyzda. Obýekti aç-açan döredip bilmersiňiz.
getInstance()
Obýekti üpjün edýän statiki usul bar .
public class Singleton {
private static Singleton instance;
private Singleton () {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
Köp okamakda kynçylyklar bar, soňra
getInstance()
marker usulyny goýup bilersiňiz
synchronized
:
public class Singleton {
private static Singleton instance;
private Singleton () {}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
Ahyrynda, hemişeki ýaly, başgaça pikir etseňiz ýa-da menden ýalňyşlyk tapsaňyz, teswirlerde ýazyň diýesim gelýär! Hemme zady höwes bilen ara alyp maslahatlaşarys :) Makalany halasaňyz, "+" ýazyň, menem bilerin. Bu meniň üçin möhümdir :) PS Has köp ýerine ýetiriş goşýaryn:
Joşua Bloçyň pikiriçe , bu şablony durmuşa geçirmegiň iň gowy usuly
Enum Singleton
public enum Singleton {
INSTANCE;
}
Double Checked Locking & volatile
public class Singleton {
private static volatile Singleton instance;
public static Singleton getInstance() {
Singleton localInstance = instance;
if (localInstance == null) {
synchronized (Singleton.class) {
localInstance = instance;
if (localInstance == null) {
instance = localInstance = new Singleton();
}
}
}
return localInstance;
}
}
Mundan başga-da
On Demand Holder idiom
:
public class Singleton {
public static class SingletonHolder {
public static final Singleton HOLDER_INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.HOLDER_INSTANCE;
}
}
+
Azyalta başlangyç
+
Highokary öndürijilik
-
Statik däl meýdanlar üçin ulanyp bolmaýar Islendik sorag / teklip - teswirlerde ýazyň!
Beýleki makalalarymy hem görüň:
GO TO FULL VERSION