引言

  假设一个项目,有日志操作类,有数据库操作类,甚至还有全局配置类。无意中造成了类似$obj1 = new A(), $obj2 = new A()....一次执行周期造成了对一个类的多次对象实例化。对象实例化出来是要占用资源的,所以单例模式(Singleton),就在此引申出来

 

单例模式的定义

  • 保证一个类仅有一个实例,并提供一个访问它的全局访问点

 

代码范例

<?php
<?php
class Singleton
{
    //静态变量保存全局实例
    private static $_instance = null;
    // http://www.manongjc.com/article/1633.html
    //私有构造函数,防止外界实例化对象
    private function __construct()
    {
    }
    //私有构造函数,防止外界实例化对象
    private function __clone() 
    {
    }
    //静态方法,单例统一访问入口
    static public function getInstance()
    {
        //全局实例已经存在,直接返回,否则new创建实例
        if(is_null( self::$_instance) || isset( self::$_instance)) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    public function display()
    {
        echo \"2333\";
    }
}

$obj = Singleton::getInstance();
//new Singleton();
//$obj2 = clone $obj;
$obj->display();
收藏 打印