Definisi: Fungsi utama dari pola singleton adalah untuk memastikan bahwa dalam aplikasi Java, hanya satu contoh kelas yang ada.
Dalam banyak operasi, seperti membuat koneksi basis data direktori, diperlukan operasi satu utamanya.
Juga, Singleton dapat dinyatakan oleh negara; Kelas Singleton Dapatkah Anda menjaga penghitungan ini dan secara otomatis meningkatkan 1 dengan menyinkronkan dengan aman.
Selain itu, Singleton juga bisa menjadi kewarganegaraan. Menyediakan fungsi seperti alat,
Model Singleton memberi kita kemungkinan menerapkan dengan cara ini. Keuntungan menggunakan singleton adalah dapat menghemat memori, karena membatasi jumlah instance dan kondusif untuk koleksi sampah Java.
Kita sering melihat bahwa class loader juga diimplementasikan dalam mode singleton dalam mode pabrik, karena kelas yang dimuat sebenarnya milik sumber daya.
Cara menggunakan mode singleton
Pola singleton umum biasanya memiliki beberapa bentuk:
Salinan kode adalah sebagai berikut:
Singleton kelas publik {
singleton pribadi () {}
// Bukankah aneh untuk mendefinisikan contoh diri Anda di dalam diri Anda?
// Perhatikan bahwa ini hanya pribadi untuk panggilan internal
private static singleton instance = singleton baru ();
// Berikut adalah metode statis untuk akses eksternal ke kelas ini, yang dapat diakses secara langsung
public static singleton getInstance () {
instance return;
}
}
Bentuk kedua:
Salinan kode adalah sebagai berikut:
Singleton kelas publik {
instance singleton statis pribadi = null;
Singleton getInstance () {{{) yang disinkronkan public static
// Metode ini ditingkatkan di atas.
// Buat instance selama penggunaan, meningkatkan efisiensi!
if (instance == null)
instance = singleton baru ();
instance return;
}
}
Singleton.getInstance () dapat digunakan untuk mengakses kelas singleton.
Bentuk kedua di atas adalah inisialisasi malas, yang berarti bahwa singleton awal dipanggil untuk pertama kalinya dan tidak perlu dihasilkan di masa depan.
Perhatikan bahwa disinkronkan dalam bentuk inisialisasi malas adalah penting. Ada banyak diskusi tentang inisialisasi malas tentang penguncian ganda (DCL), dan mereka yang tertarik akan mempelajarinya lebih lanjut.
Secara umum diyakini bahwa bentuk pertama lebih aman.
Hal -hal yang perlu diperhatikan saat menggunakan mode singleton
Kadang -kadang dalam beberapa kasus, menggunakan singleton tidak dapat mencapai tujuan singleton. -Server dan cross-jvm.
Mari kita ambil Servicelocator dari Sun Source Source Code (Pet Store 1.3.1) sebagai contoh dan menganalisisnya secara singkat:
Di toko PET, ada dua jenis servicelocator, satu ada di direktori EJB dan yang lainnya ada di direktori web. Layanan penentuan posisi, tetapi mengapa memisahkannya? Setelah mempelajari dengan cermat dua servicelocator ini, saya menemukan perbedaannya: Servicelocator mengadopsi mode singleton di web, servicelocator termasuk dalam posisi sumber daya, jadi tentu saja, mode singleton harus digunakan. Namun, dalam EJB, model Singleton telah kehilangan fungsinya, sehingga Servicelocator dibagi menjadi dua jenis, satu untuk layanan web dan yang lainnya adalah untuk layanan EJB.
Pola singleton terlihat sederhana dan sangat nyaman untuk digunakan, tetapi sangat sulit untuk menggunakannya dengan baik.