基础设计模式:单例模式+工厂模式+注册树模式

基础设计模式:单例模式+工厂模式+注册树模式

单例模式:

通过提供自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次。

使用场景:

一般数据库实例都会用单例模式

实现:

单例设计模式就是要一个类只能实例化一个对象。

要想让一个类只能实例化一个对象,就要让类先不能实例化对象,就是构造方法私有。

现在,要想实例化该类必须通过访问静态方法来实例化改类

为了防止实例多次,需要通过一个成员变量来控制加以判断

因为静态方法不能访问非静态成员,所以声明的成员也要是静态的,同时防止外部访问该成员,还要私有

class Singleton{
    
    private static $_instance;  //声明一个私有的,静态的成员属性$instance;
    
    private function __construct(){}  //构造方法私有,防止new实例化。
    
    public static function getInstance(){     //只能通过静态方法实例化对象
            if( !( self::$_instance instanceof Singleton ) )
                self::$_instance = new self();
                
            return self::$obj;
    }
    
    private function __clone(){} //防止clone对象。
  
    private function __wakeup(){} //防止使用序列化。
  
    function query($sql){
        echo $sql;
    }
}

/*通过静态方法实例化*/
$db = Singleton::getInstance();

//访问对象中的成员
$db->query("select * from user");  
工厂模式:

工厂类就是一个专门用来创建其它对象的类。所有地方加载类都走工厂方法。

注册树模式:

小工程并不实用,对于大工程方便管理生成对象。

三个模式的结合使用:

一个数据库的单例模式,通过工厂方法调用,生成的对象注册到注册树中。

你可能感兴趣的:(基础设计模式:单例模式+工厂模式+注册树模式)