php教程

超轻量级php框架startmvc

PHP工厂模式、单例模式与注册树模式实例详解

更新时间:2020-04-05 14:02:09 作者:startmvc
本文实例讲述了PHP工厂模式、单例模式与注册树模式。分享给大家供大家参考,具体如下:

本文实例讲述了PHP工厂模式、单例模式与注册树模式。分享给大家供大家参考,具体如下:

三种基本设计模式

1、工厂模式:工厂方法或者类生成对象,而不是在代码中直接new 2、单例模式:使某个类的对象仅允许创建一个 3、注册模式:全局共享和交换对象

工厂模式:


<?php
namespace IMooc;
class Factory
{
 static function createDatabase()
 {
 $db = new Database();
 return $db;
 }
}


$db = IMooc\Factory::createDatabase();

工厂模式的好处是,避免Database这个类,在很多个php文件都进行new操作,如果Database这个类发生了一些变更(修改了名字或者参数),那这时候如果不工厂模就需要修改多出了,使用工厂模式,就只需要修改工厂方法即可。

单例模式:


<?php
namespace IMooc;
class Database
{
 protected $db;
 private function __construct()
 {
 }
 // 获取数据库操作实例
 static function getInstance()
 {
 if(self::$db){
 return self::$db;
 }else{
 self::$db = new self();
 return self::$db;
 }
 }
}
// 无论调用多少次,只会创建一个实例
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();

注册树模式:


<?php
namespace IMooc;
class Register
{
 protected static $objects;
 static function set($alias, $object)
 {
 self::$objects[$alias] = $object;
 }
 static function get($name)
 {
 return self::$objects[$name];
 }
 static function _unset($alias)
 {
 unset(self::$objects[$alias]);
 }
}
$db = \IMooc\Register::get('db1');

PHP 工厂模式 单例模式 注册树模式