Pola singleton adalah salah satu pola desain yang lebih sederhana. Kelas yang menggunakan pola desain tunggal memiliki satu contoh yang dikelola sendiri. Kelas ini mencegah kelas lain membuat turunannya.
Kelas singleton juga menyediakan satu titik akses global ke instance yang dibuatnya. Jadi, kelas apa pun yang menginginkan turunan dari kelas tunggal, perlu mengaksesnya melalui titik akses tunggal.
Dukungan Java yang luar biasa untuk pemrograman berorientasi objek membuatnya mudah untuk menggunakan pola desain singleton.
Menerapkan Pola Singleton Menggunakan Java
Ada banyak cara untuk mengimplementasikan pola singleton di Java; pendekatan bersemangat dan malas adalah variasi umum. Masing-masing pendekatan ini memiliki kelebihan dan kekurangannya sendiri. Oleh karena itu, metode yang Anda pilih untuk digunakan harus bergantung pada bagaimana aplikasi Anda akan beroperasi.
Pendekatan Bersemangat
Menerapkan pola tunggal dengan pendekatan bersemangat berarti kelas membuat instance baru dari dirinya sendiri saat dimuat.
publikkelasEagerSingleton{
pribadistatis Contoh EagerSingleton = baru EagerSingleton();pribadiEagerSingleton(){}
publikstatis EagerSingleton getInstance(){
kembali contoh;
}
}
Itu EagerSingletonkelas Jawa membuat instance baru dari dirinya sendiri saat dimuat. Ini menetapkan instance ini ke statis pribadi variabel instan, yang hanya dapat diakses di dalam kelas singleton. Satu-satunya titik akses eksternal ke variabel instan adalah melalui getInstance() metode. Metode itu mengembalikan instance kelas yang dibuat sebelumnya.
Pendekatan ini sangat bagus karena mencegah multithreading masalah, yang merupakan salah satu tantangan terbesar dari pola tunggal. Ini memecahkan masalah multithreading dengan membuat instance baru dari dirinya sendiri sebelum thread baru dapat mengakses variabel instance-nya. Ini menjamin bahwa setiap utas hanya akan memiliki akses ke instance yang sama.
Namun, pendekatan bersemangat hanya praktis jika aplikasi Anda akan menggunakan turunan dari kelas tunggal saat mulai berjalan. Jika tidak, Anda akan membuat objek sebelum aplikasi Anda membutuhkannya, menggunakan sumber daya yang tidak perlu.
Pendekatan Malas
Pendekatan malas adalah solusi untuk masalah pendekatan bersemangat. Ini memungkinkan Anda untuk membuat instance baru dari kelas tunggal hanya ketika program Anda membutuhkannya.
publikkelasLazySingleton{
pribaditidak stabilstatis Contoh LazySingleton;pribadiLazySingleton(){}
publikstatis LazySingleton getInstance(){
jika (contoh == batal) {
disinkronkan (LazySingleton.kelas) {
jika (contoh == batal) {
contoh = baru LazySingleton();
}
}
}
kembali contoh;
}
}
Pendekatan malas memecahkan masalah multithreading menggunakan disinkronkan kata kunci. Ini mencegah dua utas mendapatkan akses ke variabel instan secara bersamaan. Sinkronisasi itu mahal, jadi aplikasi hanya menggunakannya sekali, saat pertama kali memanggil getInstance().
Kapan Menggunakan Pola Singleton
Pola Singleton berguna dalam banyak skenario, untuk membuat kotak dialog, menangani pengaturan registri, atau mengelola kumpulan utas.
Penggunaan umum lainnya untuk pola singleton adalah membuat kelas pusat yang mengatur koneksi database.