Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Entwurfsmuster: Factory-Modus, Singleton-Modus und Registrierungsmodus

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

高洛峰
高洛峰Original
2016-12-17 11:00:131225Durchsuche

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) {
#}

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) {
#}

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());

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



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

Stellungnahme:
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
Vorheriger Artikel:PHP-Factory-MethodenmusterNächster Artikel:PHP-Factory-Methodenmuster