2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Ketika aplikasi perlu mengontrol pembagian sumber daya, melakukan manajemen konfigurasi, dan operasi pencatatan log, persyaratan umum adalah menggunakan jalur akses global sehingga program dapat mengaksesnya melalui jalur akses global ini di mana pun jalur akses tersebut berada informasi contoh yang relevan. Untuk memenuhi kebutuhan tersebut, kita dapat menggunakan Pola Singleton. Pola singleton memastikan bahwa suatu kelas hanya memiliki satu instance dan menyediakan titik akses global untuk mengakses instance tersebut.
Secara khusus, pola tunggal biasanya menyediakan metode statis (seperti getInstance()) yang mengembalikan satu-satunya instance kelas. Karena metode ini bersifat statis, metode ini dapat dipanggil tanpa membuat turunan kelas. Ini berarti bahwa kode apa pun yang memiliki akses ke kelas bisa mendapatkan instance tunggal dengan memanggil metode statis ini.
Artikel ini akan memperkenalkan secara detail konsep dasar dan langkah implementasi pola tunggal. Melalui artikel ini, Anda akan dapat memahami cara kerja pola tunggal dan mempelajari cara menggunakannya secara efektif dalam proyek nyata.
Sebagai contoh yang menarik, model singleton seperti lingkaran cahaya protagonis di dunia anime. Tidak peduli bagaimana plot berkembang, selalu hanya ada satu protagonis, dan semua orang tahu bahwa dialah inti cerita. Dengan cara ini, tidak peduli bagaimana ceritanya terungkap, semua orang dapat menemukan orang yang sama untuk memajukan alur cerita.
keuntungan
Pastikan satu contoh: Hindari pembuatan duplikat instance dan hemat sumber daya.
titik akses global: Akses global yang nyaman dan panggilan yang disederhanakan.
Inisialisasi malas: Membuat instance sesuai permintaan untuk meningkatkan kinerja.
kekurangan
Sulit untuk diukur: Kelas singleton seringkali sulit untuk diperluas karena konstruktornya bersifat pribadi.
potensi masalah kinerja: Dalam lingkungan konkurensi tinggi, beberapa implementasi mungkin mengalami masalah kinerja.
Kesulitan dalam pengujian: Pola tunggal dapat membuat pengujian menjadi sulit karena merupakan keadaan global.
Menurut karakteristik pola tunggal, skenario penggunaannya dapat dibagi menjadi beberapa kategori berikut:
Implementasi pola tunggal biasanya mencakup tiga elemen:
- konstruktor swasta, jadikan konstruktor kelas menjadi pribadi sehingga pihak luar tidak dapat membuat instance melalui kata kunci new.
- Referensi statis pribadi menunjuk ke instance sendiri, buat variabel instance statis di dalam kelas untuk menyimpan instance unik.
- Metode statis publik yang mengembalikan instance mereka sendiri, berikan metode statis sehingga dunia luar dapat memperoleh satu-satunya instance melalui metode ini.
Untuk mode singleton gaya Lapar, instance singleton dibuat saat kelas dimuat, yang aman untuk thread karena objek statis telah dibuat saat kelas dimuat, dan kecepatan responsnya cepat saat dipanggil. Kerugiannya juga jelas. Efisiensi sumber daya tidak tinggi selama metode statis lain dari kelas tersebut dijalankan atau kelas tersebut dimuat, instance ini akan tetap diinisialisasi.
/**
* 饿汉单例模式:在还没有实例化的时候就初始化
*/
public class Hungry {
//1. 开始时就创建实例
private static final Hungry instance=new Hungry();
// 2. 私有化的构造方法
private void hungry() {
}
public static Hungry getInstance() {
// 返回单例名
return instance;
}
}