Rumah  >  Artikel  >  Java  >  Kelas Singleton di Jawa

Kelas Singleton di Jawa

PHPz
PHPzasal
2024-08-30 16:00:03851semak imbas

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.

Bagaimana Kelas Singleton berfungsi di Java?

Kelas Singleton boleh dibuat dalam dua cara.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

  1. Tetapkan pembina sebagai peribadi untuk mengehadkan penciptaan objek.
  2. Buat kaedah statik untuk mendapatkan contoh objek supaya anda boleh mengendalikan penciptaan objek di dalam kelas sahaja.

Sekarang, mari kita lihat gambar rajah Kelas UML (Bahasa Pemodelan Bersepadu) Kelas Singleton.

Kelas Singleton di Jawa

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.

  • Lazy Instantiation: Penciptaan instance apabila diperlukan
  • Semerta Awal: Pembuatan tika pada masa muat.

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.

Pelaksanaan Kelas Singleton di Jawa

Seperti yang dibincangkan di atas, Kelas Singleton boleh dibuat dalam Instalasi Awal atau Instantiasi Lazy.

Malas Instantiation

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:

Kelas Singleton di Jawa

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.

Institi Awal

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:

Kelas Singleton di Jawa

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.

Kesimpulan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Enkapsulasi di JawaArtikel seterusnya:Enkapsulasi di Jawa