Kelas Singleton mengehadkan penciptaan objek untuk kelas kepada hanya satu dalam mesin maya java. Ia juga membantu dalam menyediakan pusat akses global kepada objek. Corak reka bentuk ini biasanya digunakan dalam caching, Kilang Abstrak, pengelogan, Prototaip, dll. Ia juga digunakan dalam kelas java teras seperti java.awt.Desktop, java.lang.Runtime. Dalam java.lang.Runtime, Java menyediakan kelas Runtime yang menandakan Persekitaran Runtime semasa di mana aplikasi dijalankan. Ini membantu dalam antara muka aplikasi dan persekitaran masa jalan. Perlu ada satu objek kerana JRE adalah unik. Dalam java.awt.Desktop, Desktop kelas membenarkan aplikasi melancarkan URI atau fail dengan penyemak imbas lalai pengguna, klien mel, dsb. Di sini juga, mesti ada hanya satu contoh kelas.
Kelas Singleton boleh dibuat dalam dua cara.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sekarang, mari kita lihat gambar rajah Kelas UML (Bahasa Pemodelan Bersepadu) Kelas Singleton.
Dalam rajah Kelas UML, partition pertama mewakili nama kelas, partition kedua mewakili atribut dan partition ketiga mewakili kaedah. Juga, + menunjukkan atribut atau kaedah awam, dan – menunjukkan atribut atau kaedah peribadi. Sebagai contoh, dalam rajah UML Kelas Singleton kami, nama kelas ialah Singleton, dan ia mempunyai kaedah utama. Kaedah utama, Kaedah getInstance dan sampleMethod adalah satu-satunya kaedah yang umum dalam rajah di atas. Atribut pembina dan contoh ditetapkan sebagai peribadi sebagai sebahagian daripada pelaksanaan kami. Kaedah Utama awam ini meminta contoh, dan getInstance mengembalikannya kepada kaedah utama.
Berdasarkan Instantiation, satu-satunya perbezaan antara Kelas Java biasa dan Kelas Singleton ialah kami akan menggunakan pembina dalam Kelas Java manakala, dalam Singleton, kami akan menggunakan kaedah getInstance().
Corak reka bentuk Singleton terdiri daripada dua bentuk.
1. Lazy Instantiation
Dalam Lazy Instantiation, tika kelas dibuat apabila ia diperlukan. Ia dicipta dalam kaedah atau blok Disegerakkan untuk mengelakkan keadaan perlumbaan yang boleh berlaku dalam persekitaran berbilang benang.
2. Instalasi Awal
Dalam Instalasi Awal, tika dibuat pada masa muat. Walaupun ini adalah pendekatan yang paling mudah, ia mempunyai kelemahan iaitu penciptaan instance tidak kira sama ada ia diakses atau tidak.
Contoh Lazy Instantiation dan Early Instantiation diterangkan dalam bahagian berikut.
Seperti yang dibincangkan di atas, Kelas Singleton boleh dibuat dalam Instalasi Awal atau Instantiasi Lazy.
Berikut ialah langkah untuk melaksanakan Lazy Instantiation.
1. Tetapkan Pembina sebagai peribadi.
Sebagai contoh, kami sedang mencipta kelas, LazyClass. Pembina akan menjadi seperti yang ditunjukkan di bawah.
private LazyClass () { }
2. Buat contoh statik peribadi untuk kelas yang dibuat.
private static LazyClass instance;
3. Cipta kaedah disegerakkan statik yang menghasilkan tika kelas.
public static synchronized LazyClass getInstance() { }
4. Dalam kaedah getInstance(), mula-mula, semak sama ada sebarang kejadian ada atau tidak. Jika tidak dijumpai, buat satu. Jika tidak, kembalikan contoh.
if(instance == null) { instance = new LazyClass (); } return instance;
Sekarang, mari kita melihatnya menggunakan kod sampel.
//Java Program for Lazy Instantiation public class LazyClass { private static LazyClass instance; //set the constructor as private private LazyClass () {} //Checks whether an instance is already in the getInstance method public static synchronized LazyClass getInstance() { //if instance is not present already, create a new one if(instance == null) { instance = new LazyClass (); } // if an instance is present, then return it return instance; } //Sample method that is protected from more than one object creation public void sampleMethod( ) { System.out.println("sampleMethod for lazy singleton"); } public static void main(String[] args) { LazyClass temp=LazyClass.getInstance(); temp.sampleMethod(); } }
Output:
Di sini, bukannya mencipta tika pada masa muat, ia dibuat di dalam blok disegerakkan. Untuk pemahaman yang lebih baik, kaedah sampel juga diberikan bahawa ia dilindungi daripada lebih daripada satu penciptaan objek.
Sekarang mari kita lihat langkah-langkah untuk Instalasi Awal. Ia serupa dengan Instalasi Lazy, kecuali ia tidak menggunakan sebarang kaedah atau sekatan yang disegerakkan.
1. Tetapkan Pembina sebagai peribadi.
Sebagai contoh, kami sedang mencipta kelas, EarlyClass. Pembina akan menjadi seperti yang ditunjukkan di bawah.
private EarlyClass () () { }
2. Buat contoh statik peribadi untuk kelas yang dibuat.
private static EarlyClass <em>ins</em>= new EarlyClass();
3. Cipta kaedah statik yang membuat tika kelas dibuat.
public static EarlyClass getInstance() { }
Berikut ialah kod sampel untuk Penyemertaan Awal.
//Java Program for Early Instantiation public class EarlyClass { //Create an instance of the class at load time private static EarlyClass <em>ins</em>= new EarlyClass(); //set the constructor as private private EarlyClass () {} //A static method to get the instance public static EarlyClass getInstance() { return ins; } //A sample method that is protected from more than one object creation public void sampleMethod() { System.out.println("sampleMethod for Early singleton"); } //Main method public static void main(String[] args) { EarlyClass tmp = getInstance(); tmp.sampleMethod(); } }
Output:
Dalam atur cara di atas, contoh dibuat dalam masa muat, dan ia dikembalikan menggunakan kaedah getInstance(). Selain itu, Pembina ditetapkan sebagai peribadi sebagai sebahagian daripada instantiasi tunggal.
Penjimatan memori adalah kelebihan utama menggunakan ini sebagai objek digunakan semula dan tidak dicipta berulang kali.
Dalam dokumen ini, kami telah membincangkan cara Kelas Singleton berfungsi dengan bantuan gambar rajah UML Kelas, algoritma dan kod Contoh. Kelas Singleton digunakan apabila kita hanya memerlukan satu objek untuk kelas dan titik akses global kepada objek itu. Kedua-dua bentuk, seperti Instalasi Awal dan Instalasi Lazy, boleh digunakan berdasarkan keperluan.
Atas ialah kandungan terperinci Kelas Singleton di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!