* [ ] 工厂模式:工厂方法或者类生成对象,而不是在代码中直接new
* [ ] 单例模式: 使某个类的对象仅允许创建一个
* [ ] 注册模式: 全局共享和交换对象(在thinkphp中叫容器类,对象池)
*****
> 工厂模式:就是创建一个工厂类,在此类中new或实例化别的对象,注意它的方法是用static,其它类中可以直接调用而不用实例化.
> 单例模式: 就是不能被直接实例化的一个类,比如我们创建一个数据库连接类,使用单例模式创建,代码下:
```
namespace common;
class Database
{
protected static $instance;
private function __construct()
{
}
public static function getInstance()
{
if(self::$instance) {
return self::$instance;
}else {
self::$instance = new self();
return self::$instance;
}
}
public static function connect()
{
return 'mysql连接成功';
}
}
```
**工厂模式结合单例模式的用法:**
```
namespace common;
require 'common/Database.php';
class Factory
{
public static function createDatabase()
{
$db = Database::getInstance();
return $db;
}
}
```
**注册树模式:就是将类挂到全局树上面,方便其它类调用**
namespace common;
```
class Register
{
protected static $objects
public static function set($alias, $object)
{
self::$objects[$alias] = $object;
}
public static function get($name)
{
return self::$objects[$name];
}
private function _unset($alias)
{
unset($objects[$alias]);
}
}
```
### 入口文件调用
```
require 'common/Factory.php';
require 'common/Register.php';
use common\Register;
use common\Factory;
Register::set('db1',Factory::createDatabase());
$db=Register::get('db1');
var_dump($db::connect());
```