工厂模式
防止后面类名或参数发生变更时修改多个文件
定义一个Factory类
class Factory{
//返回数据库对象实例
static function createDatabase(){
return new Db();
}
}
单例模式
例 使用数据库连接时只需要创建一个数据库连接实例,如多次newDB对象会造成资源的浪费
class Db{
protected $db;
//在构造方法中连接数据库
private function __ construct(){}
//私有复制方法
private __clone(){}
//获取实例方法
static function getInstance(){
if($db instanceof self){
return $this->db;
}
return new self();
}
}
注册树模式
其实就是高级工厂模式
一般在环境初始化时把需要用到的对象装载上树
或者通过工厂类调用时装载,下次调用时直接获取树上的实例
class Register{
proteccted static $objects; //存取全局实例的树
//注册对象到全局的注册树上
function set($alias, $object){
sele::$objects[$alias] = $object;
}
//获取注册树上的对象
function static get($name){
return self::$objectsp[$name];
}
//卸载当前树上实例
function _unset($name){
unset(self::$objects[$name]);
}
}