JavaRush /Blog Jawa /Random-JV /Pola Singleton ing tembung sampeyan dhewe
Roman_kh
tingkat
Харьков

Pola Singleton ing tembung sampeyan dhewe

Diterbitake ing grup

Halo kabeh, javaRush!

Dina iki aku bakal ngandhani babagan pola desain Singleton(single). Pola singleton nganggo tembung sampeyan dhewe - 1Goal: nggawe kelas sing mung duwe SATU obyek. Iki tegese ora ketompo carane kakehan diakses, obyek sing padha digawe pisanan bakal bali. Iki minangka barang sing trep lan perlu ing pirang-pirang papan, ora ana gunane sing ditindakake ing kerangka kerja. Aplikasi:
  • Contone, sampeyan kudu nyambungake database menyang project lan kelas sing bakal tanggung jawab kanggo nyambung menyang. Sambungan digawe sepisan lan ora perlu nggawe maneh lan maneh
  • Application settings- kelas tanggung jawab kanggo setelan sambungan sing dibutuhake kanggo aplikasi: host database lan port, etc. Lagi digawe sapisan lan digunakake ing saindhenging operasi aplikasi.
  • Ana akeh conto liyane sing durung dakcritakake, mula tulis pilihan sampeyan ing komentar! =)
Sawise introduksi iki, kaya aku ngerti, kita bisa nuduhake conto kelas iki: (Senajan aku yakin sing saben kita bisa teka munggah karo implementasine iki) Punika conto paling prasaja, nalika kita nggawe pribadi konstruktor, i.e. Sampeyan ora bisa nggawe obyek kanthi jelas. Lan ana cara statis getInstance()sing nyedhiyakake obyek.
public class Singleton {
  private static Singleton instance;
  private Singleton () {}

  public static Singleton getInstance() {
    if (instance == null) {
      instance = new Singleton();
    }
    return instance;
  }
}
Ana masalah karo multithreading banjur sampeyan bisa sijine cara getInstance()marker synchronized:
public class Singleton {
  private static Singleton instance;
  private Singleton () {}

  public static synchronized Singleton getInstance() {
    if (instance == null) {
      instance = new Singleton();
    }
    return instance;
  }
}
Ing pungkasan, kaya biasane, aku pengin ngomong yen sampeyan mikir beda utawa nemokake kesalahan ing aku, tulis ing komentar! Kita bakal ngrembug kabeh kanthi seneng :) Yen sampeyan seneng karo artikel kasebut, tulis "+" lan aku bakal ngerti. Iki penting kanggo kula :) PS Aku nambah implementasine liyane: Miturut Joshua Bloch , iki cara paling apik kanggo ngleksanakake cithakanEnum 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;
   }
}
Lan luwih 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;
   }
}
+Inisialisasi kesed +Kinerja dhuwur -Ora bisa digunakake kanggo lapangan kelas non-statis Sembarang pitakonan / saran - tulis ing komentar! Deleng uga artikelku liyane:
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION