首页 php

php设计模式-单例模式


先来看一个简单的单例模式的例子

class Single
{
    static private $instance = null;
    // 禁止对象继承或者new 这个对象
    private function __construct()
    {

    }
    // 指定一个创建对象的方法,如果对象存在则直接返回
    public static function getInstance()
    {
        if (!self::$instance) {
            self::$instance = new self;
        }

        return self::$instance;
    }
      // 禁止对象克隆
      private function __clone()
    {
    }
}

单例模式确保一个类只有一个实例,只能自己的内部实现实例化,当他人再次实例化时返回第一次实例化的对象。

单例模式解决了一个全局使用的类频繁地创建与销毁。

单例模式的使用场景

  1. 连接数据库

    class MySql
    {
        static private $connect;
    
        private function __construct()
        {
        }
    
        static public function instance()
        {
            if (!self::$connect) {
                self::$connect = mysqli_connect('127.0.0.1', 'root', 'root', 'test', '8889');
            }
    
            return self::$connect;
        }
    
        private function __clone()
        {
            // TODO: Implement __clone() method.
        }
    
    }
    
    $mysql1 = MySql::instance();
    $mysql2 = MySql::instance();
    
    if ($mysql1 === $mysql2) {
        echo '是同一个对象';
    }



文章评论

目录