JavaRush /Java Blog /Random-TK /Singleton nagşy, öz sözleriňiz bilen
Roman_kh
Dereje
Харьков

Singleton nagşy, öz sözleriňiz bilen

Toparda çap edildi

Hemmelere salam, javaRush!

Bu gün size dizaýn nagşy (ýeke) hakda aýdaryn Singleton. Öz sözleriňizde ýekeje nagyş - 1Maksat: 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 usulyEnum 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üň:
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION