1. Mode Pendahuluan
Definisi pola
Pastikan bahwa kelas tertentu hanya memiliki satu contoh, dan instantiate itu sendiri dan memberikan contoh ini ke seluruh sistem.
Skenario penggunaan mode
Pastikan bahwa kelas hanya memiliki satu objek, misalnya, membuat objek membutuhkan terlalu banyak sumber daya, seperti mengakses sumber daya seperti IO dan database.
2. Diagram kelas UML
Pendahuluan Karakter:
(1) Klien: Klien tingkat tinggi.
(2) Singleton: Singleton.
3. Implementasi Pola Sederhana
Singleton kelas publik {private static singleton intance; singleton pribadi () {} public static singleton getInstance () { / * * Di awal, ketika banyak utas masuk, mereka menemukan kunci, dan satu utas masuk, yang kosong, objek baru; Utas berikutnya masuk, tidak kosong, tidak ada operasi; Akhirnya kembali secara langsung * Objek tidak kosong, dan beberapa utas memasukkan fungsi, tidak kosong, tidak ada operasi penguncian yang dilakukan, dan langsung mengembalikan */ if (intance == null) {disinkronkan (singleton.class) {if (intance == null) {intance = singleton baru (); }} return intance; }} class singleton1 {// malas private static singleton1 intance = new singleton1 (); // malas, memuat singleton1 private () {} public static singleton1 getInstance () {return intance; }} kelas singleton2 {// hungry private static singleton2 intance; private singleton2 () {} public static singleton2 getInstance () {// muat if (intance == null) {intance = new singleton2 (); } return intance; }} kelas singleton3 {// private static singleton3 intance; singleton3 private () {} public Sinkronisasi statis singleton3 getInstance () {// muat saat digunakan, kunci panggilan multi-threaded memiliki aksi kunci jika (intance == null) {intance = singleton3 baru (); } return intance; }} kelas singleton4 {// private static singleton4 intance; singleton4 private () {} public static singleton4 getInstance () {// runtuh disinkronkan (singleton4.class) {// efisiensi penguncian mirip dengan 3 if (intance == null) {intance = singleton4 baru (); }} return intance; }}4. Pro dan kerugian
(1) Keuntungan:
A. Karena mode singleton hanya memiliki satu contoh dalam memori, pengeluaran memori berkurang, terutama ketika suatu objek perlu dibuat dan dihancurkan, dan kinerja tidak dapat dioptimalkan selama penciptaan atau penghancuran, keuntungan dari mode singleton sangat jelas.
B. Karena pola singleton hanya menghasilkan satu contoh, overhead kinerja sistem berkurang. Ketika generasi suatu objek membutuhkan banyak sumber daya, seperti membaca konfigurasi dan menghasilkan objek dependen lainnya, itu dapat diselesaikan dengan secara langsung menghasilkan objek singleton ketika aplikasi dimulai dan kemudian secara permanen berada dalam memori;
C. Mode Singleton dapat menghindari beberapa pekerjaan sumber daya, seperti tindakan file tulis, karena hanya satu contoh yang ada dalam memori, menghindari operasi penulisan simultan pada file sumber daya yang sama.
D. Singleton Mode dapat menetapkan titik akses global dalam sistem, mengoptimalkan dan berbagi akses sumber daya. Misalnya, kelas singleton dapat dirancang untuk bertanggung jawab untuk memetakan dan memproses semua tabel data.
(2) Kerugian
Mode A. Singleton umumnya tidak memiliki antarmuka, dan sulit untuk berkembang. Jika Anda ingin berkembang, pada dasarnya tidak ada cara kedua untuk mengimplementasikannya kecuali memodifikasi kode.