基本设计模式
1. 工厂模式
工厂方法后类生成对象,而不是在代码中new 对象
class Factory
{
static function createDatabase()
{
$db = Database::getInstance();
return $db;
}
}
//工厂模式 如果过Database 类名或参数有改变的时候不会影响代码
$db = Imooc\Factory::createDatabase();
2. 单例模式
单例模式的类仅允许创建一次
class Database
{
protected $db;
//防止使用new直接创建对象
private function __construct(){}
//防止使用clone克隆对象
private function __clone(){}
static function getInstance()
{
//判断$db是否是Database的对象,不是则创建
if(!self::$db instanceof self){
self::$db = new self();
}
return self::$db;
}
}
3.注册树模式
全局共享和交换对象
class Register
{
protected static $objects;
/**
* 将类设置到注册树上
* @param $alias string 别名
* @param $object object 类
*/
static function set($alias,$object)
{
self::$objects[$alias] = $object;
}
/**
* 从注册树上删除类
* @param $alias string 别名
*/
function _unset($alias)
{
if(isset(self::$objects[$alias])){
unset(self::$objects[$alias]);
}
}
/**
* 从注册树上取类
* @param $alias string 别名
*/
function get($alias)
{
if(isset(self::$objects[$alias]))
{
return self::$objects[$alias];
}else{
return false;
}
}
}
//将Database 类添加到注册树
Register::set('db',Database::getInstance());
//获取注册树上的类
$db = Imooc\Register::get('db');
以上是三种基础的设计模式