Maison > Article > développement back-end > Modèle de conception PHP 2 : mode usine, mode singleton, mode arbre d'enregistrement
Le contenu de cet article est le modèle de conception PHP 2 : mode usine, mode singleton, mode arbre d'enregistrement. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
1. Pattern : Générez des objets dans des méthodes ou des classes d'usine au lieu de les créer directement dans le code
Avantages : Lorsqu'une classe commune a besoin de nouveaux à plusieurs endroits, utilisez le modèle d'usine pour faciliter l'expansion et la maintenance de la classe
Répertoire de fichiers : Frame/Factory.php
<?php namespace Frame; use Frame\Database; use Frame\Register; class Factory { static function createDatabase() { //$db = new Database(); //正常实例化类 $db = Database::getInstance(); //获取单例模式的类 Register::set('db',$db); //将实例化后的类注册到全局注册树中 return $db; } } //外部调用得到$db对象 $db = Frame\Factory::createDatabase(); //获取全局注册树中的对象 $db = Frame\Register::get('db'); //卸载全局注册树中的对象 $db = Frame\Register::_unset('db'); ?>
2. Mode Singleton : Seule la nouvelle instanciation d'objets est autorisée au sein de la classe elle-même
Avantages : La classe ne peut pas être nouvelle en externe , et l'objet est créé une fois dans la classe elle-même, économisant ainsi la surcharge des ressources
Répertoire de fichiers : Frame/Database.php
<?php namespace Frame; class Database { protected $db; //单例模式,私有化__construct()方法,不允许外部实例化对象 private function __construct() { } //实例化本类 static function getInstance() { if(self::$db) { return self::$db; } else { self::$db = new self(); return self::$db; } } } //外部调用 $db = Frame\Database::getInstance(); ?>
3. Mode arbre d'enregistrement : enregistrez un objet dans le fichier global arbre d'enregistrement pour une utilisation globale facile
Répertoire de stockage : Frame/Register.php
<?php namespace Frame; class Register { protected $objects; /* * 将实例化后的类注册到全局注册树中 * $alias :对象别名 * $object:实例化后的对象 */ static function set($alias,$object) { self::$objects[$alias] = $object; } /* * 卸载实例化后的类 * $alias :对象别名 */ static function _unset($alias) { unset(self::$objects[$alias]); } /* * 获取实例化后的类对象 * $alias : 对象别名 */ static function get($alias) { return self::$objects[$alias]; } } ?>
Recommandations associées :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!