Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah corak reka bentuk minat mudah dalam PHP?

Apakah corak reka bentuk minat mudah dalam PHP?

DDD
DDDasal
2023-08-16 15:04:07607semak imbas

Pola reka bentuk minat tunggal PHP termasuk: 1. Mod singleton gaya lapar, yang merujuk kepada mencipta tika apabila kelas dimuatkan dan kemudian mengembalikan tika itu secara terus 2. Mod tunggal gaya malas, mendapatkan tika pada yang pertama Kaedah panggilan digunakan untuk mencipta contoh untuk mencapai pemuatan tertangguh; pembolehubah menyimpan contoh dalam pembolehubah statik dan menyediakan kaedah statik untuk mendapatkan contoh untuk mencapai keselamatan benang mudah.

Apakah corak reka bentuk minat mudah dalam PHP?

Persekitaran pengendalian artikel ini: sistem Windows 10, versi PHP 8.1.3, komputer Dell G3.

Corak reka bentuk tunggal PHP ialah corak reka bentuk yang biasa digunakan, yang digunakan untuk memastikan kelas hanya mempunyai satu tika dan menyediakan pusat akses global.

Dalam PHP, terdapat beberapa cara untuk melaksanakan corak reka bentuk singleton:

Corak singleton gaya lapar

Corak singleton lapar-Cina bermaksud untuk mencipta contoh apabila kelas dimuatkan, dan kemudian kembalikan terus Contoh. Kelebihan kaedah ini ialah ia mudah untuk dilaksanakan dan selamat untuk benang, tetapi kelemahannya ialah pemuatan malas tidak dapat dicapai.

class Singleton {
    private static $instance = new Singleton();
    private function __construct() {}
    public static function getInstance() {
        return self::$instance;
    }
}

Lazy Singleton Pattern

Lazy Singleton Pattern bermaksud tikas dicipta hanya apabila kaedah untuk mendapatkan tika itu dipanggil buat kali pertama. Kelebihan pendekatan ini ialah ia boleh melaksanakan pemuatan malas, tetapi kelemahannya ialah isu keselamatan benang mungkin berlaku dalam persekitaran berbilang benang.

class Singleton {
    private static $instance = null;
    private function __construct() {}
    public static function getInstance() {
        if (self::$instance == null) {
            self::$instance = new Singleton();
        }
        return self::$instance;
    }
}

Double check mengunci mod singleton

Double check mengunci mod singleton adalah berdasarkan mod singleton malas dan memastikan keselamatan benang melalui penguncian. Kelebihan pendekatan ini ialah ia mencapai pemuatan malas dan keselamatan benang, tetapi kelemahannya ialah ia meningkatkan kerumitan kod.

class Singleton {
    private static $instance = null;
    private function __construct() {}
    public static function getInstance() {
        if (self::$instance == null) {
            synchronized(self::class) {
                if (self::$instance == null) {
                    self::$instance = new Singleton();
                }
            }
        }
        return self::$instance;
    }
}

Corak Singleton menggunakan pembolehubah statik

Corak Singleton menggunakan pembolehubah statik bermaksud menyimpan contoh dalam pembolehubah statik dan menyediakan kaedah statik untuk mendapatkan contoh. Kelebihan kaedah ini ialah ia mudah dilaksanakan dan selamat untuk benang, tetapi kelemahannya ialah pemuatan malas tidak dapat dicapai.

class Singleton {
    private static $instance = null;
    private function __construct() {}
    public static function getInstance() {
        if (self::$instance == null) {
            self::$instance = new Singleton();
        }
        return self::$instance;
    }
}

Di atas adalah kaedah pelaksanaan beberapa corak reka bentuk tunggal PHP biasa. Bergantung pada keperluan dan senario khusus, anda boleh memilih cara yang sesuai untuk melaksanakan singleton.

Atas ialah kandungan terperinci Apakah corak reka bentuk minat mudah dalam PHP?. 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
Artikel sebelumnya:Apakah pengawal selia php?Artikel seterusnya:Apakah pengawal selia php?