Rumah >Java >javaTutorial >Panduan Pemula untuk Corak Singleton

Panduan Pemula untuk Corak Singleton

Linda Hamilton
Linda Hamiltonasal
2024-10-29 06:28:31611semak imbas

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.

Bilakah Kita Harus Menggunakan 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:

Bila Menggunakan Corak Singleton

  1. 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.

  2. 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.

  3. 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.

  4. 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 Corak Singleton

Rajah UML biasanya mengandungi komponen berikut:

  1. Kelas Singleton: Ini ialah kelas yang mengehadkan instantiasi. Ia biasanya mempunyai pembolehubah tika statik peribadi untuk menahan tika tunggal.
  2. Pembina: Pembina adalah peribadi untuk menghalang instantiasi langsung dari luar kelas.
  3. Kaedah Statik Awam: Kaedah ini menyediakan akses kepada tika. Jika contoh tidak wujud, ia mewujudkan satu; jika tidak, ia mengembalikan contoh sedia ada.

Berikut ialah perwakilan ringkas rajah UML untuk corak Singleton:

Beginner’s Guide to the Singleton Pattern

Nota:

  • -: Pengubah suai akses peribadi (menunjukkan bahawa pembolehubah dan pembina contoh tidak boleh diakses di luar kelas).
  • : Pengubah suai akses awam (menunjukkan bahawa kaedah getConnection() boleh diakses secara terbuka).

Pelaksanaan Java

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");
      }
}

Kesimpulan

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!

Kenyataan:
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