Dalam tutorial ini, kita akan belajar mengenai corak reka bentuk singleton dan cara menerapkannya di Java dengan bantuan contoh.
Singleton adalah corak reka bentuk dan bukan ciri khusus untuk Java. Ini memastikan bahawa hanya satu contoh kelas dibuat.
Corak reka bentuk adalah seperti perpustakaan kod kami yang merangkumi pelbagai teknik pengekodan yang dikongsi oleh pengaturcara di seluruh dunia.
Singleton Java
Inilah cara kita menggunakan singleton di Jawa.
- buat
private
konstruktor yang menyekat untuk membuat objek di luar kelas - buat
private
atribut yang merujuk kepada objek tunggal. - buat
public static
kaedah yang membolehkan kita membuat dan mengakses objek yang kita buat. Di dalam kaedah ini, kita akan membuat keadaan yang menyekat kita daripada membuat lebih dari satu objek.
Inilah contohnya.
class SingletonExample ( // private field that refers to the object private static SingletonExample singleObject; private SingletonExample() ( // constructor of the SingletonExample class ) public static SingletonExample getInstance() ( // write code that allows us to create only one object // access the object as per our need ) )
Dalam contoh di atas,
private static SingletonExample singleObject
- rujukan ke objek kelas.private SingletonExample()
- pembina peribadi yang menyekat pembuatan objek di luar kelas.public static SingletonExample getInstance()
- kaedah ini mengembalikan rujukan ke satu-satunya objek kelas. Oleh kerana kaedahnya statik, ia dapat diakses menggunakan nama kelas.
Penggunaan Kelas Singleton
Singleton boleh digunakan semasa bekerja dengan pangkalan data. Mereka dapat digunakan untuk membuat kumpulan sambungan untuk mengakses pangkalan data sambil menggunakan kembali sambungan yang sama untuk semua klien. Sebagai contoh,
class Database ( private static Database dbObject; private Database() ( ) public static Database getInstance() ( // create object if it's not already created if(dbObject == null) ( dbObject = new Database(); ) // returns the singleton object return dbObject; ) public void getConnection() ( System.out.println("You are now connected to the database."); ) ) class Main ( public static void main(String() args) ( Database db1; // refers to the only object of Database db1= Database.getInstance(); db1.getConnection(); ) )
Semasa kita menjalankan program, outputnya adalah:
Anda kini disambungkan ke pangkalan data.
Dalam contoh di atas,
- Kami telah membuat Pangkalan Data kelas tunggal.
- DbObject adalah medan jenis kelas. Ini akan merujuk kepada objek Pangkalan Data kelas.
- Pembina peribadi
Database()
menghalang penciptaan objek di luar kelas. - Kaedah jenis kelas statik
getInstance()
mengembalikan contoh kelas ke dunia luar. - Di kelas Utama, kita mempunyai pemboleh ubah jenis kelas db1. Kami memanggil
getInstance()
menggunakan db1 untuk mendapatkan satu-satunya objek dari Pangkalan Data. - Kaedah
getConnection()
hanya dapat diakses menggunakan objek dari Pangkalan Data. - Oleh kerana Pangkalan Data hanya boleh mempunyai satu objek, semua pelanggan dapat mengakses pangkalan data melalui satu sambungan.
Penting untuk diperhatikan bahawa, hanya ada beberapa senario (seperti pembalakan) di mana orang tunggal masuk akal. Malah sambungan pangkalan data biasanya tidak boleh menjadi satu.
Kami mengesyorkan agar anda tidak menggunakan singleton sepenuhnya sekiranya anda tidak pasti akan menggunakannya atau tidak. Ketahui lebih lanjut: Apa yang sangat buruk mengenai Singleton?