Rumah > Java > javaTutorial > Bagaimanakah Java Enum Melaksanakan Corak Singleton?

Bagaimanakah Java Enum Melaksanakan Corak Singleton?

DDD
Lepaskan: 2024-12-02 00:02:11
asal
693 orang telah melayarinya

How Does a Java Enum Implement the Singleton Pattern?

Melaksanakan Singleton dengan Enum: Menyingkap Mekanisme

Konsep melaksanakan corak reka bentuk Singleton menggunakan enum dalam Java menimbulkan persoalan mengenai instantiasi . Untuk menyelidiki kerja dalaman, mari kita periksa coretan kod yang disediakan:

public enum MySingleton {
     INSTANCE;   
}
Salin selepas log masuk

Pada mulanya, adalah penting untuk ambil perhatian bahawa pengisytiharan enum di atas mencipta pembina kosong tersirat. Walau bagaimanapun, demi kejelasan, mari kita jelaskan:

public enum MySingleton {
    INSTANCE;
    private MySingleton() {
        System.out.println("Here");
    }
}
Salin selepas log masuk

Sekarang, mari buat kelas ujian dengan kaedah main() untuk memerhati tingkah laku:

public static void main(String[] args) {
    System.out.println(MySingleton.INSTANCE);
}
Salin selepas log masuk

Setelah melaksanakan ini kod, anda akan menyaksikan output berikut:

Here
INSTANCE
Salin selepas log masuk

Persoalan kini timbul: bagaimanakah MySingleton dibuat seketika? Jawapannya terletak pada sifat medan enum. Ia bertindak sebagai pemalar masa kompilasi tetapi secara serentak adalah contoh jenis enum yang sepadan. Pembinaannya berlaku apabila jenis enum dirujuk buat kali pertama, yang berlaku dalam kaedah main() dalam kes kami.

Oleh itu, adalah penting untuk memahami bahawa medan enum pada asasnya adalah kejadian jenis enum mereka, menyediakan mekanisme yang mudah untuk menguatkuasakan corak Singleton tanpa memerlukan instantiasi eksplisit menggunakan baharu.

Atas ialah kandungan terperinci Bagaimanakah Java Enum Melaksanakan Corak Singleton?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan