Rumah  >  Artikel  >  Java  >  Bagaimana untuk melaksanakan corak tunggal corak reka bentuk ciptaan Java

Bagaimana untuk melaksanakan corak tunggal corak reka bentuk ciptaan Java

PHPz
PHPzke hadapan
2023-05-15 10:49:05780semak imbas

Pengenalan

Corak singleton ialah corak reka bentuk ciptaan termasuk:

  • Hanya satu contoh: Corak singleton memastikan hanya terdapat satu contoh. dalam sistem Objek contoh wujud, dan semua akses kepada objek adalah rujukan kepada objek yang sama

  • Akses global: Mod tunggal boleh mengakses objek contoh secara global, mengelakkan keperluan untuk berbilang objek untuk berinteraksi antara satu sama lain. Konflik dan persaingan

  • Permulaan tertunda: Mod Singleton biasanya menggunakan teknologi pemulaan tertunda, dan hanya mencipta objek tunggal apabila diperlukan, mengelakkan pembaziran sumber dan kehilangan prestasi yang tidak perlu , memastikan Ketepatan dan kebolehpercayaan objek tunggal

  • Keselamatan benang: Mod Singleton perlu mempertimbangkan isu keselamatan benang untuk memastikan objek contoh yang diperoleh di bawah berbilang benang adalah sama, mengelakkan berbilang benang Persaingan dan konflik antara

Kelebihan

  • Menyediakan contoh unik di peringkat global untuk memudahkan pengurusan dan penyelenggaraan objek

  • Mengurangkan penciptaan dan pemusnahan objek serta meningkatkan prestasi sistem.

  • Mengelakkan persaingan dan konflik antara berbilang kejadian, memastikan ketekalan dan kestabilan keadaan objek Ciri

  • Boleh mengawal bilangan kejadian kelas tertentu dalam sistem untuk mengelakkan pembaziran dan penyalahgunaan sumber sistem

  • Memudahkan keselamatan benang dan bersiri , refleksi dan fungsi lain bertambah baik kebolehpercayaan dan keselamatan objek

Kelemahan

  • Mod tunggal akan meningkatkan kerumitan kod, meningkatkan Ia mengurangkan kesukaran penyelenggaraan sistem dan ujian kod

  • Mod tunggal boleh menyebabkan kitaran hayat objek tunggal menjadi terlalu lama, menyebabkan objek tidak dilepaskan dalam masa, sekali gus menjejaskan prestasi sistem

  • Corak tunggal mungkin disalahgunakan, mengakibatkan terlalu banyak objek tunggal dalam sistem, yang meningkatkan penggunaan sumber sistem dan kesukaran pengurusan

  • Mod tunggal mungkin rosak, terutamanya dalam persekitaran berbilang benang, kaedah pelaksanaan khas diperlukan untuk memastikan ketepatan dan kebolehpercayaan objek tunggal

pelaksanaan

Lapar Gaya Cina

Ini ialah kaedah pelaksanaan tunggal yang paling mudah Dalam kaedah ini, tika tunggal dibuat apabila kelas dimuatkan, jadi ia boleh dijamin selamat dalam persekitaran berbilang benang

Gaya malas

Dalam pendekatan ini, tika tunggal dicipta pada kali pertama ia digunakan Dalam persekitaran berbilang benang, menggunakan mekanisme penguncian berganda memastikan hanya satu tikar dicipta .

package com.fanqiechaodan.singleton.singleton1;
/**
 * @Classname Singleton
 * @Description
 */
public class Singleton {
    private static final Singleton INSTANCE = new Singleton();
    private Singleton(){
        // 私有构造函数
    }
    public static Singleton getInstance(){
        return INSTANCE;
    }
}

Kelas dalaman statik

Kaedah ini mengambil kesempatan daripada mekanisme pemuatan kelas Java Instance Singleton dimuatkan hanya apabila kelas SingletonHolder diakses buat kali pertama, dan boleh dilaksanakan pemuatan malas

package com.fanqiechaodan.singleton.singleton2;
/**
 * @Classname Singleton
 * @Description
 */
public class Singleton {
    private static volatile Singleton instance;
    private Singleton() {
        // 私有构造函数
    }
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

Penghitungan

Menggunakan jenis penghitungan boleh melaksanakan mod tunggal selamat benang Penghitungan dibuat apabila ia ditakrifkan, jadi ia selamat untuk Benang, dan hanya ada satu instance.

package com.fanqiechaodan.singleton.singleton3;
/**
 * @Classname Singleton
 * @Description
 */
public class Singleton {
    private Singleton(){
        // 私有构造函数
    }
    public static Singleton getInstance(){
        return SingletonHolder.INSTANCE;
    }
    private static class SingletonHolder{
        private static final Singleton INSTANCE = new Singleton();
    }
}

  • Pelaksanaan gaya lapar adalah mudah, tetapi tidak menyokong pemuatan malas Apabila aplikasi bermula, objek contoh dicipta

  • Gaya malas menyokong pemuatan malas, tetapi ia memerlukan penggunaan mekanisme kunci semak dua kali dan kodnya agak rumit
  • Kelas dalaman statik ialah kaedah pelaksanaan yang mudah dan selamat benang , dan juga menyokong pemuatan malas
  • Jenis penghitungan ialah kaedah pelaksanaan tunggal yang paling selamat dan paling selamat Ia tidak perlu mempertimbangkan isu keselamatan benang dan juga menyokong pemuatan malas 🎜>
  • Secara umum, corak singleton penghitungan adalah pelaksanaan singleton yang mudah, cekap dan selamat yang dapat memenuhi keperluan kebanyakan corak singleton. mod untuk melaksanakan mod tunggal.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan corak tunggal corak reka bentuk ciptaan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam