PHP-Entwurfsmuster: Factory-Modus, Singleton-Modus und Registrierungsmodus

高洛峰
Freigeben: 2023-03-03 15:20:02
Original
1220 Leute haben es durchsucht

Die drei häufigsten Entwurfsmuster in allen objektorientierten Bereichen sind: Factory-Modus, Singleton-Modus und Registrierungsmodus (Containermodus)

Factory-Modus, Factory-Methoden oder -Klassen generieren Objekte, nicht im Code Direkt neu

Singleton-Modus, sodass ein Objekt einer bestimmten Klasse nur einen

Registrierungsmodus erstellen, Objekte global teilen und austauschen kann

Factory-Modus Factory.php

<?php
class Database{
    public function __construct()
    {
        return "Database\n";
    } 
 
}
//工厂类
class Factory{
    public static function createDatabase()
    {
        $db = new Database();
        return $db;
    }
}
 
$db = Factory::createDatabase();
$db1 = Factory::createDatabase();
$db2 = Factory::createDatabase();
 
var_dump($db, $db1, $db2);
#object(Database)#1 (0) {
#}
#object(Database)#2 (0) {
#}
#object(Database)#3 (0) {
#}
Nach dem Login kopieren

Singleton-Modus singleton.php

<?php
//单例模式
class Database{
    protected static $db;
    //构造方法私有,防止在外层直接new
    private function __construct(){
        //code
    }
 
    static function getInstance(){
        if (self::$db) {
            return self::$db;
        }else{
            self::$db = new self();
            return self::$db;
        }
    }
}
 
$db = Database::getInstance();
$db1 = Database::getInstance();
$db2 = Database::getInstance();
 
var_dump($db, $db1, $db2);
#object(Database)#1 (0) {
#}
#object(Database)#1 (0) {
#}
#object(Database)#1 (0) {
#}
Nach dem Login kopieren

Factory-Modus wird in Kombination mit Singleton verwendet

<?php
class Database{
    protected static $db;
    private function __construct(){
        
    }
 
    static function getInstance(){
        if (self::$db) {
            return self::$db;
        }else{
            self::$db = new self();
            return self::$db;
        }
    }
}
class Factory{
    public static function createDatabase(){
        return Database::getInstance();
    }
}
 
var_dump(Factory::createDatabase());
Nach dem Login kopieren

Klasse registrieren register.php

<?php
//注册器模式
class Register
{
    protected static $objects;
 
    static function set($alias, $object){
        self::$objects[$alias] = $object;
    }
    static function get($name){
        return self::$objects[$name];
    }
    function _unset($alias){
        unset(self::$objects[$alias]);
    }
}
 
Register::set(&#39;db1&#39;, $db);
Register::get(&#39;db1&#39;);
Nach dem Login kopieren



Weitere Artikel zu PHP-Designmustern wie Factory-Modus, Singleton-Modus und Registrierungsmodus finden Sie auf der chinesischen PHP-Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage