php设计模式——单例模式

  学习php这么久,虽然设计模式遇到不少,但是都没有深究,最近有时间准备研究下php的设计模式,我们就从“单例模式”开始。

  单例模式,顾名思义只有一个实例。单例模式确保某一个类只有一个实例,它不会创建实例副本,而是利用自身的方法自行实例化。首先我们看一个例子:

class OpenStack{
    private static $instance = null; //注意一定要是静态私有变量private function __construct(){ //构造函数一定为私有,否则外部可以直接实例化该类

    }

    public static function getInstance(){ //该函数应为公有,保证外部可以直接调用,实例化本身;内部应判断该类实例是否存在,否则生成该实例
        if(self::$instance == null){
            self::$instance = new self();
        }
        return self::$instance;
    }
}

  在这里我们可以看到,由于该OpenStack类的构造函数是私有的,所以这个类并不能在外部直接实例化,只能通过getInstance()这个共有的方法来操作。

  在该方法的内部,我们首先要判断$instance是否存在,不存在的话就实例化该类本身,赋给$instance。否则就直接返回$instance,这样就能保证该应用中只存在该类的一个实例,避免了多次new OpenStack()产生的资源开销。

  

原文地址:https://www.cnblogs.com/liujiaq/p/6137705.html