Memahami Corak Singleton di Jawa
Corak Java Singleton ialah corak reka bentuk yang digunakan secara meluas yang menjamin kelas hanya mempunyai satu tika dan menyediakan pusat akses global kepadanya. Anggaplah ia sebagai pengurus tunggal yang mengawasi pasukan - hanya ada satu, dan semua orang berinteraksi melalui satu titik hubungan itu. Artikel ini akan memecahkan pelaksanaan corak dan pelbagai pendekatan dalam Java.
Mengapa Gunakan Corak Singleton?
- Instance Tunggal Dijamin: Memastikan hanya satu contoh kelas wujud dalam aplikasi anda. Ini penting untuk mengurus sumber seperti sambungan pangkalan data (mengelakkan penciptaan dan pemusnahan sambungan yang berlebihan) atau spooler pencetak (mencegah konflik antara pengguna).
- Titik Capaian Global: Menyediakan satu pusat akses yang mudah didapati kepada contoh.
- Pengurusan Sumber: Mengurus sumber dikongsi dengan cekap seperti konfigurasi, sistem pengelogan atau kumpulan benang.
Cara Melaksanakan Corak Singleton dalam Java
Beberapa pendekatan wujud, setiap satu dengan pertukaran sendiri:
1. Permulaan Malas: Mencipta tika hanya apabila ia pertama kali diperlukan.
import java.io.Serializable; public class LazySingleton implements Serializable { private static LazySingleton instance; private LazySingleton() { if (instance != null) { throw new IllegalStateException("Instance already created"); } } public static LazySingleton getInstance() { if (instance == null) { instance = new LazySingleton(); } return instance; } private Object readResolve() { return getInstance(); } }
2. Thread-Safe Singleton: Menggunakan synchronized
untuk memastikan keselamatan thread semasa pembuatan contoh.
import java.io.*; public class ThreadSafeSingleton implements Serializable { private static final long serialVersionUID = 1L; private static ThreadSafeSingleton instance; private ThreadSafeSingleton() { if (instance != null) { throw new IllegalStateException("Instance already created"); } } public static synchronized ThreadSafeSingleton getInstance() { if (instance == null) { instance = new ThreadSafeSingleton(); } return instance; } private Object readResolve() { return getInstance(); } }
3. Penguncian Disemak Dua Kali: Mengoptimumkan keselamatan benang dengan meminimumkan overhed penyegerakan.
import java.io.*; public class DoubleCheckedLockingSingleton implements Serializable { private static final long serialVersionUID = 1L; private static volatile DoubleCheckedLockingSingleton instance; private DoubleCheckedLockingSingleton() { if (instance != null) { throw new IllegalStateException("Instance already created"); } } public static DoubleCheckedLockingSingleton getInstance() { if (instance == null) { synchronized (DoubleCheckedLockingSingleton.class) { if (instance == null) { instance = new DoubleCheckedLockingSingleton(); } } } return instance; } private Object readResolve() { return getInstance(); } }
4. Bill Pugh Singleton (Disyorkan): Menggunakan kelas dalaman statik untuk memastikan pengamulaan malas dan keselamatan benang.
import java.io.*; public class BillPughSingleton implements Serializable { private static final long serialVersionUID = 1L; private BillPughSingleton() { if (SingletonHelper.INSTANCE != null) { throw new IllegalStateException("Instance already created"); } } private static class SingletonHelper { private static final BillPughSingleton INSTANCE = new BillPughSingleton(); } public static BillPughSingleton getInstance() { return SingletonHelper.INSTANCE; } private Object readResolve() { return getInstance(); } }
5. Enum Singleton (Pendekatan Moden): Memanfaatkan keselamatan benang yang wujud dan pengendalian siri enum. Ini sering dianggap sebagai pendekatan terbaik kerana kesederhanaan dan keteguhannya.
public enum EnumSingleton { INSTANCE; public void showMessage() { System.out.println("Hello from Enum Singleton!"); } }
Ringkasan Pelaksanaan Singleton
- Permulaan Malas: Mudah, tetapi memerlukan pengendalian tambahan untuk keselamatan benang dan penyirian.
- Thread-Safe Singleton: Thread-safe, tetapi boleh mempunyai prestasi overhed disebabkan oleh penyegerakan.
- Pengunci Disemak Dua Kali: Meningkatkan prestasi berbanding pendekatan selamat benang asas.
- Bill Pugh Singleton: Elegan dan cekap, selalunya diutamakan kerana kesederhanaan dan keselamatan benangnya.
- Enum Singleton: Penyelesaian yang paling ringkas dan mantap, memanfaatkan ciri terbina dalam Java. Umumnya disyorkan untuk pembangunan Java moden.
Atas ialah kandungan terperinci Memahami Corak Singleton di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Penjelasan terperinci mengenai reka bentuk jadual SKU dan SPU di platform e-dagang Artikel ini akan membincangkan isu reka bentuk pangkalan data SKU dan SPU dalam platform e-dagang, terutamanya bagaimana menangani jualan yang ditentukan pengguna ...

Bagaimanakah penyelesaian caching Redis menyedari keperluan senarai kedudukan produk? Semasa proses pembangunan, kita sering perlu menangani keperluan kedudukan, seperti memaparkan ...
