Corak Singleton ialah salah satu konsep yang paling asas untuk difahami. Ia diklasifikasikan sebagai corak reka bentuk ciptaan dan ia digunakan untuk mengawal penciptaan objek, memastikan hanya satu tika kelas tertentu wujud sepanjang hayat aplikasi.
Dalam istilah yang lebih mudah, ia memastikan bahawa kelas bertanggungjawab untuk mengurus hanya satu versi dirinya dan ia memberikan akses global kepada tika tunggal itu.
Jadi bila/mengapa perlu menggunakan Singleton Pattern, ini adalah salah satu soalan yang paling biasa?
Sebelum menyelami bila/mengapa menggunakan corak Singleton, adalah penting untuk memahami pernyataan masalah. Setiap corak reka bentuk dicipta sebagai tindak balas kepada cabaran khusus yang dihadapi oleh pembangun.
Pernyataan Masalah: Sambungan Pangkalan Data
Kami mahu menguruskan satu sambungan ke pangkalan data sepanjang aplikasi kami. Mencipta berbilang sambungan boleh menyebabkan konflik dan keletihan sumber.
// first instance DataConnection dataConnection1 = new DataConnection(); //Second instance DataConnection dataConnection2 = new DataConnection();
Dalam senario ini, mencipta dua contoh DataConnection boleh menyebabkan isu sumber. Setiap kejadian boleh melakukan operasi secara bebas, membawa kepada konflik dan tingkah laku yang tidak dapat diramalkan jika mereka cuba mengakses sumber pangkalan data yang sama secara serentak.
Untuk menyelesaikan masalah ini, kami memerlukan corak Singleton.
Corak Singleton sememangnya popular, terutamanya dalam reka bentuk perisian, kerana ia adalah alat yang berkuasa tetapi boleh disalahgunakan dengan mudah. Mari fahami bila sesuai untuk menggunakan Corak Singleton:
Apabila Hanya Satu Contoh Kelas Diperlukan Secara Global
Jika kita memerlukan kelas yang sepatutnya mempunyai hanya satu contoh di seluruh aplikasi, Corak Singleton ialah pilihan terbaik ? . Ini memastikan bahawa semua bahagian aplikasi berfungsi dengan tika yang sama, mengekalkan konsistensi dan mencegah kejadian pendua yang mungkin membazirkan ingatan.
Apabila Kami Memerlukan Pengurusan Berpusat Sumber Dikongsi
Singleton berfaedah apabila terdapat sumber yang dikongsi, seperti tetapan konfigurasi, cache atau alat pengelogan, yang diperlukan oleh berbilang bahagian permohonan itu. Akses dan pengurusan berpusat memudahkan pengendalian sumber, terutamanya untuk kelas yang perlu boleh diakses dan diubah suai secara global.
Apabila Kami Ingin Kawal Akses kepada Sumber
Singleton membenarkan capaian terkawal kepada satu sumber dengan merangkumnya dalam kelas. Ini menjadikannya berguna apabila hanya satu sambungan atau sumber harus digunakan pada satu masa, seperti mengurus penulis fail untuk memastikan akses disegerakkan atau sambungan rangkaian kongsi.
Dalam Aplikasi Berbilang Benang atau Selari
Dalam aplikasi dengan berbilang utas, Singleton boleh memastikan bahagian kritikal atau sumber yang dikongsi tidak diakses oleh lebih daripada satu utas pada satu masa. Singleton yang dilaksanakan dengan betul boleh menyediakan akses selamat benang, mengurangkan kemungkinan keadaan perlumbaan dan memastikan bahawa hanya satu contoh sumber dikongsi diakses secara serentak.
Kini, kami faham tentang masalah dan bila hendak digunakan, mari lihat cara menangani masalah ini.
Rajah UML biasanya mengandungi komponen berikut:
Berikut ialah perwakilan ringkas rajah UML untuk corak Singleton:
Nota:
Berikut ialah contoh corak Singleton yang dilaksanakan dalam Java:
// first instance DataConnection dataConnection1 = new DataConnection(); //Second instance DataConnection dataConnection2 = new DataConnection();
Sekarang, jika kami ingin mendapatkan contoh Sambungan Pangkalan Data, kami memanggil kaedah statiknya seperti ini: DataConnection dataConnection = DataConnection.getConnection();.
public class DataConnection { private static DataConnection instance = null; /* * This private keyword in constructor * is to prevent direct instantiation from * outside the class. */ private DataConnetion() { } /* * static method so that we can call * this method outside the class without * instantiation object */ public static DataConnection getConnection() { if (instance == null) { instance = new DataConnection(); } return instance; } public void showMessage() { System.out.println("Database is connected"); } }
Corak Singleton ialah corak reka bentuk asas yang memastikan hanya satu contoh kelas tertentu wujud merentas aplikasi, Dengan mengehadkan proses instantiasi dan menyediakan akses global kepada satu contoh, corak Singleton membantu mengurus sumber dikongsi dengan cekap, seperti sambungan pangkalan data, tetapan konfigurasi dan pembalak. Corak ini amat berguna dalam senario di mana ketekalan dan akses terkawal kepada sumber adalah penting.
Untuk mendapatkan maklumat lanjut dan amalan terbaik tentang melaksanakan Corak Singleton dengan berkesan, rujuk panduan ini tentang DigitalOcean.
Atas ialah kandungan terperinci Panduan Pemula untuk Corak Singleton. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!